6个版本
0.3.0 | 2019年10月13日 |
---|---|
0.2.0 | 2019年1月28日 |
0.1.3 | 2018年8月22日 |
0.1.1 | 2018年7月10日 |
0.1.0 | 2017年11月22日 |
#50 in #stack-trace
28,740 每月下载量
34KB
778 代码行
检索进程所有线程的堆栈跟踪。
这是使用 rstack crate 实现的,它本身使用 ptrace 来回溯进程的线程。由于进程不能 ptrace 自身,我们被迫使用启动子进程来完成这项工作。通过 Cargo 特性支持多个回溯实现
默认情况下,使用 libunwind 后端。您可以通过 Cargo 切换到 libdw
[dependencies]
rstack-self = { version = "0.1", features = ["dw"], default-features = false }
示例
extern crate rstack_self;
use std::env;
use std::process::Command;
use std::thread;
fn main() {
if env::args_os().count() > 1 {
let _ = rstack_self::child();
return;
}
// spawn a second thread just for fun
thread::spawn(background_thread);
let exe = env::current_exe().unwrap();
let trace = rstack_self::trace(Command::new(exe).arg("child")).unwrap();
println!("{:#?}", trace);
}
fn background_thread() {
loop {
thread::park();
}
}
依赖项
~3–5MB
~103K SLoC