#backtrace #stack-trace #run-time #frame #fork #com #tree

无std pprof-backtrace

一个用于在Rust程序运行时获取堆栈跟踪(backtrace)的库。从 https://github.com/rust-lang/backtrace-rs/tree/0.3.61 分支。

2个版本

0.3.63 2022年12月9日
0.3.62 2022年12月9日
0.3.61 2022年12月9日

#825 in 调试

MIT/Apache

225KB
4.5K SLoC

pprof-backtrace

文档

这是一个用于在Rust运行时获取backtrace的库。这个库旨在通过提供程序接口来增强标准库的支持,但它也支持像libstd的panics一样简单地打印当前的backtrace。从 https://github.com/rust-lang/backtrace-rs/tree/0.3.61 分支。

安装

[dependencies]
pprof-backtrace = "0.3"

用法

要简单地捕获一个backtrace并在以后处理它,您可以使用顶层的 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
    });
}

许可证

此项目根据以下任一许可证授权:

由您选择。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您故意提交给backtrace-rs的任何贡献都将按照上述方式双授权,不附加任何额外的条款或条件。

依赖关系

~5MB
~96K SLoC