Sie können nichts außer einer ausführbaren Datei debuggen. Debugger arbeiten, indem sie die Erinnerung an einen laufenden Prozess untersuchen; Ohne eine ausführbare Datei können Sie keinen Prozess haben.
Unter der Annahme, diese beiden Dateien:
src/lib.rs
pub fn add_one(i: u8) -> u8 {
i + 2
}
#[test]
fn inline_test() {
assert_eq!(2, foo::add_one(1));
}
Tests/awesome.rs
extern crate foo;
#[test]
fn a_test() {
assert_eq!(6, foo::add_one(5));
}
Wenn Sie laufen cargo build
oder cargo test
, Test-Binärdateien wird inerstellt werdenVerzeichnis. In diesem Fall gibt es eine binäre foo-69521add8c82059a
und eine awesome-4a24b21e22bc042a
. Wenn ein Programm ausgeführt wird, wird dieser Satz von Tests ausgeführt. Alle Rust-Tests funktionieren so - es wird eine ausführbare Datei generiert, deren Ausführung (eventuell mit den richtigen Befehlszeilenflags) den Test ausführt.
Diese ausführbare Datei ist, was Sie in GDB oder LLDB debuggen müssen:
$ rust-lldb target/debug/awesome-4a24b21e22bc042a
(lldb) br set -r '.*add_one.*'
(lldb) r
Process 59413 launched: '/private/tmp/foo/target/debug/awesome-4a24b21e22bc042a' (x86_64)
running 1 test
Process 59413 stopped
* thread #2: tid = 0xe9637, 0x0000000100038a3e awesome-4a24b21e22bc042a`foo::add_one::ha28bd7bf9dda9f1d + 14 at lib.rs:2, name = 'a_test', stop reason = breakpoint 1.1
frame #0: 0x0000000100038a3e awesome-4a24b21e22bc042a`foo::add_one::ha28bd7bf9dda9f1d + 14 at lib.rs:2
1 pub fn add_one(i: u8) -> u8 {
-> 2 i + 2
3 }
rustc -g --crate-type lib libr.rs
Dies vermeidet Ladung verwendet wird, die die meisten Menschen zu tun, nicht zu wollen, gehen zu. Der wichtige Aspekt dieser Zeile ist das Flag -g
, das den Compiler anweist, Debuginformationen hinzuzufügen. cargo build
oder cargo test
kompilieren standardmäßig im Debugging-Modus. Sie können auch build your tests in release mode.
Gibt es Tests in dieser Bibliothek, die Sie debuggen möchten? – user25064
nein die Tests sind innerhalb von /tests/raindrops.rs - aber in der Tat, ja ich will Tests oder die Aufrufe durch diese Tests debuggen – xetra11