Debian上如何进行Rust调试
导读:1. 准备调试环境 在Debian上调试Rust程序前,需先安装Rust工具链和调试工具。打开终端,执行以下命令: 通过rustup安装Rust(若未安装):curl --proto '=https' --tlsv1.2 -sSf htt...
1. 准备调试环境
在Debian上调试Rust程序前,需先安装Rust工具链和调试工具。打开终端,执行以下命令:
- 通过
rustup
安装Rust(若未安装):curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.profile # 确保将~/.cargo/bin加入PATH
- 安装调试器(GDB/LLDB)及Rust集成组件:
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项目:使用
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通过扩展可简化调试流程:
- 安装扩展:打开VSCode,进入扩展市场,搜索并安装
Rust Analyzer
(代码智能提示)和CodeLLDB
(调试器)。 - 配置
launch.json
:- 按
F5
或点击左侧调试图标,选择“创建launch.json文件”。 - 选择“Rust”环境,自动生成配置(示例如下):
{ "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 # 保留调试信息
- 静态编译(避免glibc兼容问题):编辑
.cargo/config.toml
,添加以下内容:
然后编译:[target.x86_64-unknown-linux-gnu] rustflags = ["-C", "target-feature=+crt-static"]
cargo build --release
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上如何进行Rust调试
本文地址: https://pptw.com/jishu/726558.html