2015-05-28 6 views
12

Doing RUST_BACKTRACE=1 cargo run gibt einen Stack-Trace, wenn ein Fehler auftritt, wie unten gezeigt. Gibt es eine Möglichkeit, die Datei & Zeilennummer anstelle der Hexadezimaladresse zu bekommen?Stack-Trace mit Zeilennummern bei laufendem Cargo-Lauf

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 
+0

Welche Plattform sind Sie? Ich dachte, dass Linux Dateinamen und Zeilennummern hatte. – Shepmaster

+5

@Shempmaster: nur für Debug-Builds, nicht für Release-Builds. –

+1

@Shempmaster I mit OS X 10.10 –

Antwort

6

Es gibt eine pull request in den Haupt Rost Repo verschmolzen, die Dateinamen und Zeilennummern Backtrace erstellt. Soweit ich sehen kann, war es ein Teil von Rost 1.0.0 stabile Freisetzung.

Sie müssen die Rückverfolgung aktivieren und die ausführbare Datei unter Verwendung von cargo profile erstellen, die Debugsymbole in ausführbare Dateien enthält (mit der Option debug = true im Frachtmanifest). AFAIK cargo run verwendet jetzt standardmäßig das Debug-Profil.

Hier ist beispielsweise Trace-Ausgabe mit Dateinamen und Zeilennummern:

[[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 

Leider ist dies auf einigen Plattformen wie MacOS X. gebrochen Es ist offen issue darüber in Rost Github issue tracker.

+0

@Shepmaster Pull-Anforderung besagt, dass es auf jedem Nicht-Android POSIX OS funktioniert - weiß nicht, ob es MacOS X enthält –

+2

Ich kann feststellen, dass ab Rust 1.5 Backtraces keine Zeilennummern auf OS X haben. Ich nicht sehe sie^_^ – Shepmaster

+0

Unter OS X 10.11 mit Rust 1.5, sehe ich immer noch nicht die Zeilennummern –

Verwandte Themen