如果你的 Rust 在 cargo test 有失败的用例,那么可能你需要 Debug 你的测试用例,尤其是当使用 C 级别绑定时,你可能会想能跳到 gdb session 里取调试你的代码。
本文将告诉你怎么使用 rust-gdb 来调试测试用例。
Step 1
使用 cargo test
来找出带调试测试用例的执行文件,如下:
$ cargo test
Compiling cutr v0.1.0 (/home/joshua/workspace/rust-tutorials/command_line/08.cutr)
Running unittests src/lib.rs (target/debug/deps/cutr-9da6f31d175dd591)
running 3 tests
test unit_test::test_extract_chars ... ok
test unit_test::test_extract_fields ... ok
test unit_test::test_parse_pos ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running unittests src/main.rs (target/debug/deps/cutr-3c640cc4436b9d40)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests cutr
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
如上,找到测试用例执行文件:target/debug/deps/cutr-9da6f31d175dd591
Step 2
使用前文设置好的 TermDebug,或是直接使用 rust-gdb 开开启调试
$ rust-gdb target/debug/deps/cutr-9da6f31d175dd591
打上断点,并运行:
(gdb) b lib.rs:173
Breakpoint 1 at 0x7460a: file src/lib.rs, line 173.
(gdb) run --test
Step 3
然后使用 gdb 的操作命令进行 debug 就行了。