84 个发布版本
0.3.73 | 2024 年 6 月 12 日 |
---|---|
0.3.71 | 2024 年 3 月 22 日 |
0.3.69 | 2023 年 8 月 22 日 |
0.3.68 | 2023 年 6 月 29 日 |
0.1.4 | 2015 年 7 月 16 日 |
#9 in 调试
6,013,457 每月下载量
用于 32,546 个 crate(460 直接使用)
260KB
5.5K SLoC
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
crate 是标准库的核心组件,有时必须跟上各种平台的演变以满足标准库的需求。这通常意味着使用提供各种平台 unwinding 和 symbolication 的最新库。因此,backtrace
很可能使用最新的 Rust 功能或依赖于使用这些功能的库。根据政策,其最低支持的 Rust 版本大约是当前稳定版本的“stable - 2”。
此政策优先于此仓库中其他地方写入的版本。
许可证
本项目根据以下许可证之一授权:
- Apache License,版本 2.0,(LICENSE-APACHE 或 http://apache.ac.cn/licenses/LICENSE-2.0)
- 麻省理工学院许可证(LICENSE-MIT 或 https://opensource.org/licenses/MIT)
由您自行选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您提交给backtrace-rs的任何有意贡献,应以上述双重许可方式,不得附加任何其他条款或条件。
依赖项
~2.3–4MB
~75K SLoC