println!("变量名 = {}", variable) 是最直接的调试方式,通过在代码中插入宏输出变量值或程序流程,适合快速定位简单问题。
dbg!(variable) 是Rust 1.34+引入的增强型宏,输出内容包括变量名、值、文件名及行号(如 src/main.rs:2:14: 2:15 x = 42),无需手动拼接字符串,大幅提升调试效率。两者均需重新编译运行(cargo run)查看结果。
Rust提供了rust-gdb(GDB包装器)和rust-lldb(LLDB包装器),专门优化了对Rust调试信息的支持(如显示结构体字段、枚举变体等)。
sudo apt install gdb(Debian/Ubuntu)或 sudo yum install gdb(CentOS/RHEL);sudo apt install lldb(Debian/Ubuntu)或 sudo dnf install lldb(Fedora);rustup component add llvm-tools-preview安装(包含rust-gdb/rust-lldb)。cargo build已包含),启动调试器:rust-gdb target/debug/your_program # 使用GDB
rust-lldb target/debug/your_program # 使用LLDB
常用命令:
break main:在main函数设置断点;run:启动程序;next(n):单步执行(不进入函数);step(s):单步执行(进入函数);print variable(p):查看变量值;backtrace(bt):查看调用栈;continue(c):继续执行程序。主流IDE通过图形化界面简化调试流程,推荐Visual Studio Code(VSCode)和IntelliJ IDEA:
rust-analyzer扩展(提供Rust语言支持);.vscode/launch.json配置文件,示例如下:{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug Rust",
"program": "${workspaceFolder}/target/debug/your_program",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
F5启动调试,支持变量监视、调用栈查看、单步执行等功能。Rust插件,通过Run → Debug配置启动调试,界面与Java调试类似,适合习惯IDE的开发者。Rust的#[test]属性允许编写单元测试和集成测试,通过assert_eq!/assert_ne!/panic等宏验证代码逻辑。运行测试:
cargo test # 执行所有测试
cargo test test_function_name # 执行指定测试函数
测试失败时会输出详细错误信息(如预期值与实际值的差异),适合验证代码正确性。
Valgrind是强大的内存调试工具,可检测内存泄漏、非法内存访问、未初始化内存使用等问题。使用步骤:
valgrind --tool=memcheck --leak-check=full target/debug/your_program
输出结果会显示内存泄漏的位置(如definitely lost表示明确泄漏),适合排查复杂的内存问题。
通过rustc的-Z标志启用高级调试功能,例如:
-Z verbose:输出更详细的编译信息(如宏展开过程);-Z backtrace:程序崩溃时生成完整调用栈回溯(需在Cargo.toml中配置):[profile.dev]
debug = true
rustflags = ["-Z", "backtrace"]
运行崩溃程序时,会显示更详细的错误上下文,帮助定位问题根源。以上方法覆盖了从基础到高级的调试需求,可根据问题复杂度选择合适的方式(如简单变量查看用`dbg!“宏,复杂逻辑用IDE调试,内存问题用Valgrind)。