Ответ 1
Существует запрос pull, объединенный с основным репо rust, который добавляет имена файлов и номера строк в backtrace. Насколько я вижу, это было частью стабильного выпуска ржавчины 1.0.0.
Вам необходимо включить backtraces и создать исполняемый файл с помощью профиля груза, который включает в себя символы отладки в исполняемый файл (с опцией debug = true
в грузовом манифесте). AFAIK cargo run
теперь использует профиль отладки.
Ниже приведен пример вывода трассировки с именами файлов и номерами строк:
[[email protected] ~/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
К сожалению, это прерывается на некоторых платформах, таких как MacOS X. Об этом в
issue сообщается в трекере о проблемах с ржавчиной github.