标准库中唯一读取RUST_BACKTRACE
环境变量的地方是函数sys_common::backtrace::log_enabled()
.该函数仅从panicking::default_hook
调用,panicking::default_hook
在panic 发生后被调用.因此,设置它应该不会影响性能,除非线程崩溃.
请注意,此标志还影响编译器本身(rustc
).编译器有时会发出panic ,导致"正常"退出,禁止打印回溯,但仍在计算回溯.当编译错误后退出时,可能会发生这种情况.过go ,有人报告说,这导致一些版本的编译器需要很长时间才能退出RUST_BACKTRACE=1
集.
一些 crate 本身也可以处理RUST_BACKTRACE
:例如,error_chain
crate 在生成错误并设置RUST_BACKTRACE=1
时会生成回溯.这可能会减慢使用此 crate 的项目.使用error_chain
的一个著名项目是cargo
.