Rust 运行货物运行时,使用行号堆叠跟踪

Rust 运行货物运行时,使用行号堆叠跟踪,rust,stack-trace,rust-cargo,Rust,Stack Trace,Rust Cargo,当出现如下所示的错误时,执行RUST\u BACKTRACE=1货物运行会给出堆栈跟踪。有没有办法获取文件和行号而不是十六进制地址 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/sr

当出现如下所示的错误时,执行
RUST\u BACKTRACE=1货物运行
会给出堆栈跟踪。有没有办法获取文件和行号而不是十六进制地址

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
线程“”在一个名为`Result::unwrap()`的`Err`值上惊慌失措:解析:无效编码字节',/Users/rustbuild/src/rust buildbot/slave/stable dist rustc mac/build/src/libcore/Result.rs:729
堆栈回溯:
1:0x104c9403f-sys::backtrace::write::h7807ec07859fb503t1r
2:0x104c980e4-恐慌::on_恐慌::ha0ed2b9b562a7f9ctZv
3:0x104c7c4d5-rt::展开::开始展开内部::hbfb8d99cb52be7a1cHv
4:0x104c7cd66-rt::展开::开始_展开_fmt::hac7eda7c3f3b8498QFv
5:0x104c979bc-生锈\u开始\u展开
6:0x104cb75f5-恐慌::恐慌fmt::h051633da0da2e362wwy
7:0x104be0877-结果::结果::展开::h15040486031244389916
8:0x104bdc6f1-主要::h393644ca2d1fdb82uLa
9:0x104c99e18-内部生锈
10:0x104c99e05-防锈试验
11:0x104c988e8-rt::lang_start::H5324DAE87DAC8YTV
12:0x104be500e-主
发生未知错误
有一个合并到主rust repo中的程序,它将文件名和行号添加到回溯中。据我所知,这是rust 1.0.0稳定版本的一部分

您必须启用回溯并使用将调试符号包含到可执行文件中的可执行文件来构建可执行文件(在货物清单中使用
debug=true
选项)。AFAIK
cargo run
现在默认使用调试配置文件

以下是带有文件名和行号的跟踪输出示例:

[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
[user@salikhov~/workspace/mqtt rust$rust\u BACKTRACE=1货物运行
编译mqtt v0.1.0(file:///home/user/workspace/mqtt-rust)
正在运行`target/debug/mqtt`
线程“”在“我想要行号!”处惊慌失措,src/proto/client.rs:33
堆栈回溯:
1:0x7ff049fa47d9-sys::backtrace::tracing::imp::write::he18882fa84e6b00ePnt
2:0x7ff049fa39b8-恐慌::on_恐慌::h495226a97f084523enx
3:0x7ff049f9dcce-系统公用::展开::开始展开内部::h7a4ee06c0d57e26affs
4:0x7ff049f95f47-系统公用::展开::开始展开::h13029855766851973181
地址../src/libstd/sys/common/unwind/mod.rs:232
5:0x7ff049f95e8a-proto::client::MqttConnection::connect::h633d3d42c15a3dedgYa
at/home/user/workspace/mqtt/:3
6:0x7ff049f80416-主::h1d77c75265710f92gaa
在src/main.rs:5
7:0x7ff049fa6084-sys_common::unwind::try::try_fn::h4848098439110500489
8:0x7ff049fa3098-\uuuuuuu rust\uu try
9:0x7ff049fa5cf8-rt::lang_start::hcf64c98c1a7c0031Zkx
10:0x7ff049f834f6-主
11:0x7ff049170ec4-\uuuu libc\u start\u main
12:0x7ff049f802a8-
13:0x0-
发生未知错误

不幸的是,在某些平台上,如MacOS X上,这一点被打破。在rust github issue tracker中,这一点是公开的。

如果您进入deps子目录并从那里运行程序,您现在将在OSX中获得行号

这是由于这一未解决的问题,有望很快得到解决:

您在哪个平台上?我以为Linux确实有文件名和行号。@Shepmaster:只用于调试版本,不用于发布版本。@Shepmaster I使用OS X 10。10@ChrisMorgan:这似乎可以将您的评论转化为答案;问题是否是缺少调试符号(使用
-g
标志可能会有所帮助?)或者,即使存在调试符号,它们也会被忽略?@BilalHussain:在发布模式中,各种优化会严重损坏文件名和行号。毕竟,您可能会注意到堆栈跟踪不完整(缺少中间函数)例如,一般情况下,你必须学会使用它,如果信息不足,那么就找到一种方法来复制这个问题,并在调试中尝试它。@席普马斯特拉请求声明它在任何非Android POSIX OS上工作。不知道它是否包括MaOS XI可以声明,作为RIST 1.5,回溯没有行号O。n OS X。我没有看到他们在OS X 10.11上使用Rust 1.5,我仍然没有看到行号,一年半后我仍然没有看到行号。(Rust 1.19,OSX 10.12)。#