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 调试

Download history 9222/week @ 2024-03-14 12469/week @ 2024-03-21 12707/week @ 2024-03-28 10442/week @ 2024-04-04 10886/week @ 2024-04-11 10696/week @ 2024-04-18 10642/week @ 2024-04-25 10022/week @ 2024-05-02 9053/week @ 2024-05-09 10113/week @ 2024-05-16 10499/week @ 2024-05-23 11261/week @ 2024-05-30 9656/week @ 2024-06-06 8721/week @ 2024-06-13 8809/week @ 2024-06-20 6998/week @ 2024-06-27

每月 35,581 次下载

MIT/Apache

1.5MB
31K SLoC

M4 13K SLoC // 0.2% comments C 11K SLoC // 0.2% comments Shell 7K SLoC // 0.2% comments Automake 331 SLoC // 0.1% comments Rust 197 SLoC // 0.0% comments AWK 12 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:?}");
}

然而,如果您希望直接访问实际的追踪功能,可以使用 traceresolve 函数。

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.0许可证定义,您有意提交给backtrace-rs的任何贡献都应按上述方式双许可,没有任何附加条款或条件。

依赖项