Rust编程在Ubuntu上如何调试
小樊
35
2025-12-16 13:19:24
在 Ubuntu 上调试 Rust 的高效方法
一 环境准备
- 安装调试器与 Rust 增强组件:
- 安装系统调试器:sudo apt update && sudo apt install gdb lldb
- 安装 Rust 调试脚本与源码组件:rustup component add rust-src llvm-tools-preview
- 建议始终使用 debug 构建进行调试:cargo build(默认即为 debug,含调试符号)。如使用发布构建,请改为 cargo build --release 并在调试器中加载对应产物。以上工具为命令行与 IDE 调试提供基础支持。
二 命令行调试
- 使用 rust-gdb(对 GDB 的 Rust 友好封装):
- 启动:rust-gdb target/debug/your_program
- 常用命令:break main(断点)、run(运行)、next(单步跳过)、step(单步进入)、print variable(打印变量)
- 使用 rust-lldb(对 LLDB 的 Rust 友好封装):
- 启动:rust-lldb target/debug/your_program
- 常用命令:b binary_search(按函数名断点)、b file.rs:15(按文件行断点)、r(运行)、n(单步跳过)、frame variable(查看局部变量)
- 小技巧:
- 在 LLDB 中可用 settings set target.run-args “arg1” “arg2” 设置程序参数;frame variable 能直观查看 Vec、String 等复合类型内容。以上命令覆盖日常断点、单步、变量查看等核心调试场景。
三 在 VSCode 中调试
- 本地或远程 Ubuntu 开发均可,推荐组合:
- 扩展:rust-analyzer(语言支持)、CodeLLDB(LLDB 调试器集成)
- 生成调试配置后,按 F5 启动
- 示例 launch.json(使用 LLDB):
- 新建 .vscode/launch.json,内容示例:
{
“version”: “0.2.0”,
“configurations”: [
{
“name”: “(linux) Launch”,
“type”: “lldb”,
“request”: “launch”,
“program”: “${workspaceFolder}/target/debug/hello-rust”,
“args”: [],
“cwd”: “${workspaceFolder}”
}
]
}
- 远程调试(Windows 笔记本 + 远程 Ubuntu):
- 安装 VS Code 的 Remote - SSH 扩展并连接 Ubuntu
- 在远程端安装 gdb 或 lldb,VS Code 内选择 Rust (gdb) 或 CodeLLDB 模板生成配置,F5 即可调试远程项目。
四 崩溃分析与内存检查
- 崩溃回溯:运行程序前设置环境变量 RUST_BACKTRACE=1,可打印完整调用栈,便于定位 panic 位置:RUST_BACKTRACE=1 cargo run
- 内存错误与泄漏检测:使用 Valgrind(仅 Linux 可用)
- 安装:sudo apt install valgrind
- 检测:valgrind --tool=memcheck target/debug/your_program
- 适合发现非法内存访问、越界读写与内存泄漏等问题。
五 快速技巧与排错
- 快速打印调试:使用 println! 或 dbg!;后者会打印值并附带 文件名与行号,非常适合临时定位问题
- 构建与检查:开发期用 cargo build 获取调试符号;逻辑问题优先写 cargo test 做单元/集成测试;仅做语法与类型检查时用 cargo check 提升迭代效率
- 常见问题速解:
- 断点看不到变量或类型显示不友好:确认是 debug 构建,并使用 rust-gdb/rust-lldb 启动
- VSCode 调试启动失败:检查扩展是否安装、调试器路径(如 /usr/bin/gdb)、以及 program 是否指向 target/debug/ 下的可执行文件。