如果使用
我处于一个多线程环境中,在该环境中有许多线程同时运行,并且任何一个线程都可能发生 panic。我想应该将
set_hook
,我们可以获得大量信息,尤其是堆栈跟踪 - 这非常有帮助。但是,使用catch_unwind
,我只得到一个Result
,其中几乎没有任何有用的信息。因此,我想知道如何使用Rust的catch_unwind
获取 panic 信息(特别是堆栈跟踪)?我处于一个多线程环境中,在该环境中有许多线程同时运行,并且任何一个线程都可能发生 panic。我想应该将
set_hook
与catch_unwind
一起使用,并且还要使用一些线程本地变量,但我不确定是否可行以及具体细节。
11: playground::g at src/main.rs:8:13 12: playground::main at src/main.rs:16:5
对于发布模式,它是内联的,因此您可以添加#[inline(never)]
以获得类似的结果。 - Kitsuset_hook
的回调函数中有backtrace,但我该如何将该值传输到GET_BACKTRACE_HERE
位置?我可以使用ThreadLocal,但这样安全吗?(例如,在多线程或多恐慌发生时?我不熟悉恐慌) - ch271828n