rust里调试panic

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/varding/article/details/48913947

rust在panic以后只会显示一条简单的提示信息:

thread ‘’ panicked at ‘index out of bounds: the len is 0 but the index is 19’, ../src/libcollections\vec.rs:1044

这个太简单了几乎无法定位出错信息,可以通过设置RUST_BACKTRACE=1来显示更多信息,这个让rust在出错的时候把调用的堆栈信息打印出来

thread '<main>' panicked at 'index out of bounds: the len is 0 but the index is 19', ../src/libcollections\vec.rs:1044
stack backtrace:
   0:           0x79cdc7 - sys::backtrace::write::hb171d69d9b1f1b68IBt
   1:           0x7a472e - panicking::log_panic::h7ffafb2a071ed29aAmx
   2:           0x7627cc - sys_common::unwind::begin_unwind_inner::h88366a0603dbea09ejs
   3:           0x762f3b - sys_common::unwind::begin_unwind_fmt::h60d19642b754cf3dkis
   4:           0x799f22 - rust_begin_unwind
   5:           0x7bef58 - panicking::panic_fmt::h2baac947817f2499wZK
   6:           0x7baf0b - panicking::panic_bounds_check::h2bd1766a54714f24CYK
   7:           0x430c8d - vec::Vec<T>.IndexMut<usize>::index_mut::h15047657644726247854
                        at ../src/libcollections/vec.rs:1044
   8:           0x43eb67 - ctrls::list_box::ListBox::GetText::he68992a30652b4fbQAg
                        at K:\software\pc\rust\wtl-rs\src\ctrls/list_box.rs:235
   9:           0x409f5f - handler::main_dialog::MainDlgHandler::register_handler::closure.44629
                        at src\handler/main_dialog.rs:54
...(以下省略)

这样就可以根据call stack来找到出错的地方

cmd下设置最简单:set RUST_BACKTRACE=1即可
power shell: $env:RUST_BACKTRACE=1

猜你喜欢

转载自blog.csdn.net/varding/article/details/48913947