1. 准备调试环境
在Debian上调试Rust程序前,需先安装Rust工具链和调试工具。打开终端,执行以下命令:
rustup安装Rust(若未安装):curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.profile # 确保将~/.cargo/bin加入PATH
sudo apt update && sudo apt install gdb lldb
rustup component add rust-src llvm-tools-preview # 增强Rust调试支持
2. 编译带调试信息的Rust程序
调试需保留符号信息,可通过以下方式编译:
rustc直接编译,添加-g标志:rustc -g hello.rs # 生成带调试信息的hello可执行文件
cargo build时添加--release(优化代码)和-g(保留调试信息):cargo build --release -g # 生成target/release/your_project(带调试信息)
3. 使用命令行调试器(GDB/LLDB)
rust-gdb(GDB包装器,更适合Rust)或rust-lldb(LLDB包装器)启动程序:rust-gdb target/release/your_project # 或 rust-lldb target/release/your_project
break main:在main函数设置断点。run:启动程序(带命令行参数时可追加,如run arg1 arg2)。next(或n):单步执行(不进入函数)。step(或s):单步执行(进入函数)。print x(或p x):打印变量x的值。backtrace(或bt):查看当前调用堆栈。continue(或c):继续执行至下一个断点或程序结束。quit:退出调试器。4. 使用IDE/编辑器增强调试(以VSCode为例)
VSCode通过扩展可简化调试流程:
Rust Analyzer(代码智能提示)和CodeLLDB(调试器)。launch.json:
F5或点击左侧调试图标,选择“创建launch.json文件”。{
"version": "0.2.0",
"configurations": [
{
"name": "Debug",
"type": "lldb",
"request": "launch",
"program": "${workspaceFolder}/target/release/your_project", // 调试目标路径
"args": [], // 命令行参数(可选)
"cwd": "${workspaceFolder}", // 工作目录
"sourceLanguages": ["rust"] // 语言类型
}
]
}
F5即可启动调试会话,支持可视化单步执行、变量查看等功能。5. 简单调试技巧(无需复杂工具)
println!/dbg!宏:
println!("变量值: {}", x):直接打印变量值(适合快速调试)。dbg!(x):打印变量值及文件名、行号(更简洁,需Rust 1.34+)。RUST_BACKTRACE环境变量:RUST_BACKTRACE=1查看完整回溯信息:RUST_BACKTRACE=1 cargo run # 或直接运行程序:RUST_BACKTRACE=1 ./target/release/your_project
valgrind检测内存问题:valgrind后,运行程序检测内存泄漏或非法访问:sudo apt install valgrind
valgrind --tool=memcheck target/debug/your_project
6. 高级调试选项
Cargo.toml:[profile.release]
debug = true # 保留调试信息
.cargo/config.toml,添加以下内容:[target.x86_64-unknown-linux-gnu]
rustflags = ["-C", "target-feature=+crt-static"]
然后编译:cargo build --release