Reputation: 9214
Doing RUST_BACKTRACE=1 cargo run
gives a stack trace when an error occurs as shown below. Is there any way to get the file & line number instead of the hex address?
thread '<main>' panicked at 'called `Result::unwrap()` on an `Err` value: Parsing: invalid encoding byte', /Users/rustbuild/src/rust-buildbot/slave/stable-dist-rustc-mac/build/src/libcore/result.rs:729
stack backtrace:
1: 0x104c9403f - sys::backtrace::write::h7807ec07859fb503t1r
2: 0x104c980e4 - panicking::on_panic::ha0ed2b9b562a7f9ctZv
3: 0x104c7c4d5 - rt::unwind::begin_unwind_inner::hbfb8d99cb52be7a1cHv
4: 0x104c7cd66 - rt::unwind::begin_unwind_fmt::hac7eda7c3f3b8498QFv
5: 0x104c979bc - rust_begin_unwind
6: 0x104cb75f5 - panicking::panic_fmt::h051633da0da2e362wwy
7: 0x104be0877 - result::Result<T, E>::unwrap::h15040486031244389916
8: 0x104bdc6f1 - main::h393644ca2d1fdb82uLa
9: 0x104c99e18 - rust_try_inner
10: 0x104c99e05 - rust_try
11: 0x104c988e8 - rt::lang_start::h5324dae87dacdac8YTv
12: 0x104be500e - main
An unknown error occurred
Upvotes: 22
Views: 13189
Reputation: 1276
If you go into the deps subdirectory and run the program from there you will now get line numbers in OSX.
This is due to this open issue which hopefully will be fixed soon: https://github.com/rust-lang/cargo/issues/4490
Upvotes: 1
Reputation: 4653
There is a pull request merged into main rust repo which adds file names and line numbers to backtrace. As far as I can see it was a part of rust 1.0.0 stable release.
You have to enable backtraces and build executable using cargo profile which includes debug symbols into executable (with debug = true
option in cargo manifest). AFAIK cargo run
is using debug profile by default now.
Here is example trace output with file names and line numbers:
[user@salikhov ~/workspace/mqtt-rust $ RUST_BACKTRACE=1 cargo run
Compiling mqtt v0.1.0 (file:///home/user/workspace/mqtt-rust)
Running `target/debug/mqtt`
thread '<main>' panicked at 'I want line numbers!', src/proto/client.rs:33
stack backtrace:
1: 0x7ff049fa47d9 - sys::backtrace::tracing::imp::write::he18882fa84e6b00ePnt
2: 0x7ff049fa39b8 - panicking::on_panic::h495226a97f084523enx
3: 0x7ff049f9dcce - sys_common::unwind::begin_unwind_inner::h7a4ee06c0d57e26affs
4: 0x7ff049f95f47 - sys_common::unwind::begin_unwind::h13029855766851973181
at ../src/libstd/sys/common/unwind/mod.rs:232
5: 0x7ff049f95e8a - proto::client::MqttConnection::connect::h633d3d42c15a3dedgYa
at /home/user/workspace/mqtt-rust/<std macros>:3
6: 0x7ff049f80416 - main::h1d77c75265710f92gaa
at src/main.rs:5
7: 0x7ff049fa6084 - sys_common::unwind::try::try_fn::h4848098439110500489
8: 0x7ff049fa3098 - __rust_try
9: 0x7ff049fa5cf8 - rt::lang_start::hcf64c98c1a7c0031Zkx
10: 0x7ff049f834f6 - main
11: 0x7ff049170ec4 - __libc_start_main
12: 0x7ff049f802a8 - <unknown>
13: 0x0 - <unknown>
An unknown error occurred
Unfortunately, this is broken on some platforms like MacOS X. There is open issue about this in rust github issue tracker.
Upvotes: 10