37 个版本
使用旧版 Rust 2015
0.1.37 | 2020 年 4 月 30 日 |
---|---|
0.1.35 | 2020 年 3 月 24 日 |
0.1.32 | 2019 年 10 月 17 日 |
0.1.31 | 2019 年 7 月 17 日 |
0.1.2 | 2015 年 7 月 14 日 |
#638 in 调试
每月 35,581 次下载
1.5MB
31K SLoC
包含 (autotools 代码混淆,450KB) src/libbacktrace/configure,(autoconf 代码混淆,18KB) src/libbacktrace/configure.ac
backtrace-rs
这是一个用于在运行时获取 Rust 的堆栈跟踪的库。这个库旨在通过提供编程接口来增强标准库的支持,但它也支持像 libstd 的 panics 一样简单地打印当前的堆栈跟踪。
安装
[dependencies]
backtrace = "0.3"
使用方法
要简单地捕获堆栈跟踪并在稍后处理,您可以使用顶层 Backtrace
类型。
use backtrace::Backtrace;
fn main() {
let bt = Backtrace::new();
// do_some_work();
println!("{bt:?}");
}
然而,如果您希望直接访问实际的追踪功能,可以使用 trace
和 resolve
函数。
fn main() {
backtrace::trace(|frame| {
let ip = frame.ip();
let symbol_address = frame.symbol_address();
// Resolve this instruction pointer to a symbol name
backtrace::resolve_frame(frame, |symbol| {
if let Some(name) = symbol.name() {
// ...
}
if let Some(filename) = symbol.filename() {
// ...
}
});
true // keep going to the next frame
});
}
支持的 Rust 版本
backtrace
代码包是标准库的核心组件,有时必须跟上各种平台的演变,以满足标准库的需求。这通常意味着使用为各种平台提供解包和符号化的最新库。因此,backtrace
很可能使用最新的 Rust 功能或依赖使用它们的库。其最低支持的 Rust 版本,根据政策,是当前稳定版后的几个版本,大约是 "stable - 2"。
此政策优先于本存储库中其他地方写明的版本。
许可证
本项目受以下任一许可证的许可:
- Apache 许可证第 2 版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交给backtrace-rs的任何贡献都应按上述方式双许可,没有任何附加条款或条件。