I use RUST_BACKTRACE=full ./my-program
to run my compiled program.
However, I get a message like below which has only the function address without line numbers.
thread 'main' panicked at 'index out of bounds: the len is 6 but the index is 6', src/libcore/slice/mod.rs:734
stack backtrace:
0: 0x100a26463 - std::sys::imp::backtrace::tracing::imp::unwind_backtrace::hbdeac7eba2f064c6
1: 0x100a2786d - std::panicking::default_hook::{{closure}}::h9e0a6ca9bb64b479
2: 0x100a27434 - std::panicking::default_hook::h9043ae80af471c9f
3: 0x100a29f17 - std::panicking::rust_panic_with_hook::h05996066754c6be9
4: 0x100a29e04 - std::panicking::begin_panic::h9fecf34da42eb910
5: 0x100a29d22 - std::panicking::begin_panic_fmt::he5aad713258a67c3
6: 0x100a29c87 - rust_begin_unwind
7: 0x100a4a5f0 - core::panicking::panic_fmt::he26d734b771c5b2c
8: 0x100a4a568 - core::panicking::panic_bounds_check::h19dd3f615b4fea05
9: 0x100a1fc76 - <usize as core::slice::SliceIndex<[T]>>::index::h1f41340feec36937
10: 0x100a1f744 - core::slice::<impl core::ops::Index<I> for [T]>::index::h3246d2321fb7f789
11: 0x100a205b6 - sort::merge::h697218a53d5049aa
12: 0x100a20227 - sort::merge_sort::h10fe012581f48b43
13: 0x100a201e5 - sort::merge_sort::h10fe012581f48b43
14: 0x100a201e5 - sort::merge_sort::h10fe012581f48b43
15: 0x100a20159 - sort::merge_sort_pub::hb18b616b61510f3b
16: 0x100a20e24 - sort::main::hffac78b51f3ea2c3
17: 0x100a29c45 - std::panicking::try::do_call::h24a2756282b9a31c
18: 0x100a2ba2a - __rust_maybe_catch_panic
19: 0x100a2a1d0 - std::rt::lang_start::hd19f94db0c6a490e
20: 0x100a20fc9 - main
Is there any method to add the line numbers at the break spot?
This problem is a cross-platform issue and is tracked as Rust issue 24346. My workspace is macOS 10.12.4:
The workaround is to use a debugger to get the callstack information.
I have a
hellobugs.rs
file only present several lines of buggy code. At line 3, I cause a panic due to accessing the vector out of bounds:Compile this with
rustc hellobugs.rs -g -o hellobugs
Don't forget the-g
argument.Running with
RUST_BACKTRACE=full ./hellobugs
will get backtraces but without line numbers on my macOS. As the issue says, we can userust-lldb hellobugs
to debug it and get detailed backtraces. Of course, usinglldb
is okay as well:My results are as above. You can see at
frame #4
there comes the buggy result ofat hellobug.rs:3
. This informs us the 3rd line has a bug. It is a little bother to uselldb
and trace, but it's accurate!