运行货物运行时堆栈跟踪与行号

时间:2015-05-28 20:18:42

标签: rust stack-trace rust-cargo

当发生错误时,执行RUST_BACKTRACE=1 cargo run会给出堆栈跟踪,如下所示。有没有办法得到文件&行号而不是十六进制地址?

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

2 个答案:

答案 0 :(得分:7)

有一个pull request合并到主要生锈仓库中,它会添加文件名和行号以进行回溯。据我所知,这是生锈1.0.0稳定释放的一部分。

您必须使用cargo profile启用回溯并构建可执行文件,其中包括调试符号到可执行文件(货物清单中带有import sys if sys.version < (3, 0): input_function = raw_input else: input_function = input def tax_from_income(r): if r > 800000: return int((r - 800000)*.3) elif r > 700000: return int((r - 700000)*.25) elif r > 600000: return int((r - 600000)*.2) elif r > 500000: return int((r - 500000)*.1) else: return 0 def incometax(): nam = input("Please provide your name: ") if nam in database1: while True: try: r = float(input_function("Please provide your income details: ")) tax = tax_from_income(r) if tax > 0: return 'Rs.' + str(tax) + ' is your income tax' else: return 'You are exempt from Income tax' except ValueError: print("Please do not type in special character") # while loop is continued here... 选项)。 AFAIK debug = true现在默认使用调试配置文件。

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

cargo run

不幸的是,在某些平台上,例如MacOS X,它已被打破。在rust github问题跟踪器中有关于此的开放issue

答案 1 :(得分:1)

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

这是由于这个未解决的问题很快就会解决: https://github.com/rust-lang/cargo/issues/4490

相关问题