gpt4 book ai didi

rust - 是否可以在不 panic 的情况下在 Rust 中打印回溯?

转载 作者:行者123 更新时间:2023-11-29 07:52:05 26 4
gpt4 key购买 nike

是否可以在不 panic 的情况下打印回溯(假设启用了 RUST_BACKTRACE)?似乎唯一的方法就是通过 panic! 调用。如果不是,有什么原因吗?

最佳答案

Rust 使用 backtrace crate在出现 panic 时打印回溯(已合并到 PR #60852 中)。

可以在 crate 文档中找到一个简单的例子

use backtrace::Backtrace;

fn main() {
let bt = Backtrace::new();

// do_some_work();

println!("{:?}", bt);
}

例如给出

stack backtrace:
0: playground::main::h6849180917e9510b (0x55baf1676201)
at src/main.rs:4
1: std::rt::lang_start::{{closure}}::hb3ceb20351fe39ee (0x55baf1675faf)
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/rt.rs:64
2: {{closure}} (0x55baf16be492)
at src/libstd/rt.rs:49
do_call<closure,i32>
at src/libstd/panicking.rs:293
3: __rust_maybe_catch_panic (0x55baf16c00b9)
at src/libpanic_unwind/lib.rs:87
4: try<i32,closure> (0x55baf16bef9c)
at src/libstd/panicking.rs:272
catch_unwind<closure,i32>
at src/libstd/panic.rs:388
lang_start_internal
at src/libstd/rt.rs:48
5: std::rt::lang_start::h2c4217f9057b6ddb (0x55baf1675f88)
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/rt.rs:64
6: main (0x55baf16762f9)
7: __libc_start_main (0x7fab051b9b96)
8: _start (0x55baf1675e59)
9: <unknown> (0x0)

关于rust - 是否可以在不 panic 的情况下在 Rust 中打印回溯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56558321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com