6 个版本 (3 个重大更新)
0.4.2 | 2023年12月22日 |
---|---|
0.4.1 | 2022年2月26日 |
0.4.0 | 2020年11月4日 |
0.3.0 | 2019年10月13日 |
0.1.0 | 2017年11月7日 |
#703 在 调试 中
每月 20,228 次下载
用于 4 个 crate(直接使用 2 个)
48KB
1K SLoC
rstack
远程堆栈跟踪。
许可证
许可协议为以下之一
- Apache 许可协议第 2 版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确说明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可协议定义,应按上述方式双许可,不附加任何额外条款或条件。
lib.rs
:
到 libunwind 的接口。
libunwind 提供了对进程调用链的访问。它支持本地和远程进程。
示例
打印当前线程的回溯
use unwind::{Cursor, RegNum, get_context};
get_context!(context);
let mut cursor = Cursor::local(context).unwrap();
loop {
let ip = cursor.register(RegNum::IP).unwrap();
match (cursor.procedure_info(), cursor.procedure_name()) {
(Ok(ref info), Ok(ref name)) if ip == info.start_ip() + name.offset() => {
println!(
"{:#016x} - {} ({:#016x}) + {:#x}",
ip,
name.name(),
info.start_ip(),
name.offset()
);
}
_ => println!("{:#016x} - ????", ip),
}
if !cursor.step().unwrap() {
break;
}
}
依赖项
~0.3–0.8MB
~19K SLoC