実行可能ファイル以外のデバッグはできません。デバッガは、実行中のプロセスのメモリを検査して動作します。実行可能ファイルなしでは、プロセスを持つことはできません。
と仮定すると、この2つのファイル:
のsrc/lib.rs
pub fn add_one(i: u8) -> u8 {
i + 2
}
#[test]
fn inline_test() {
assert_eq!(2, foo::add_one(1));
}
テスト/ awesome.rs
extern crate foo;
#[test]
fn a_test() {
assert_eq!(6, foo::add_one(5));
}
あなたがcargo build
またはcargo test
、テストバイナリを実行で作成されますディレクトリ。この場合、foo-69521add8c82059a
と呼ばれる1つのバイナリと、awesome-4a24b21e22bc042a
と呼ばれる1つのバイナリがあります。いずれかのプログラムを実行すると、一連のテストが実行されます。すべてのRustテストはこのように動作します。何らかの種類の実行可能ファイルが生成され、実行されます(コマンドラインフラグの正しいセットで)テストが実行されます。
この実行可能ファイルを使用すると、GDBまたはLLDBでデバッグするために必要なものです:
$ 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
これはほとんどの人がやりたいするつもりはありません貨物を、使用して回避します。この行の重要な側面は、デバッギング情報を追加するようにコンパイラに指示する-g
フラグです。 cargo build
またはcargo test
はデフォルトでデバッグモードでコンパイルされます。 build your tests in release modeも可能です。
このlibにデバッグするテストがありますか? – user25064
テストは/tests/raindrops.rs内にありませんが、実際にはそうです。テストや呼び出しをデバッグしたい場合は – xetra11