阅读量:3
Ubuntu 下高效调试 Rust 的实用技巧
一 基础打印与断言
- 使用 println! 快速输出变量与执行流,适合定位简单问题。
- 使用 dbg! 宏在表达式位置打印值与源码位置,能显著加速定位(Rust 1.33 起内置)。
- 用 debug_assert! / assert_eq! 做开发期不变式校验,仅在未定义 NDEBUG 时生效,不影响发布构建性能。
- 小示例:
以上方法轻量、无侵入,适合作为第一线排查手段。fn main() { let x = 42; dbg!(x); // [src/main.rs:3:5] x = 42 debug_assert!(x > 0, "x 必须为正数"); }
二 命令行调试器 GDB 与 LLDB
- 安装调试器与 Rust 包装器:
sudo apt update sudo apt install gdb lldb rust-gdb rust-lldb - 编译与启动:优先调试未优化构建(保留调试符号)
cargo build # 生成 target/debug/... rust-gdb target/debug/your_app # 或 rust-lldb target/debug/your_app - 常用命令速览:
- GDB:break main / run / next / step / print var
- LLDB:breakpoint set --name main / run / next / step / frame variable
- 提示:在断点处用 print 或 frame variable 查看局部变量与参数;Rust 的 rust-gdb / rust-lldb 对 Rust 类型与名称解析更友好。
三 在 VS Code 中一键调试
- 安装扩展:在 VS Code 安装 rust-analyzer。
- 生成调试配置:点击左侧运行与调试,创建 .vscode/launch.json,选择环境为 LLDB(推荐)或 GDB,使用如下示例(按需调整 program 与 args):
{ "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug", "program": "${workspaceFolder}/target/debug/your_app", "args": [], "cwd": "${workspaceFolder}", "env": {} } ] } - 使用:在代码行号左侧设断点,按 F5 启动;可结合 tasks.json 自定义构建任务(如区分 debug/release)。
四 内存与错误定位工具
- 内存错误与泄漏检测:
sudo apt install valgrind valgrind --tool=memcheck target/debug/your_app - 崩溃回溯:在开发配置中开启更完整的回溯,便于定位 panic 现场。
# Cargo.toml [profile.dev] debug = true overflow-checks = true rustflags = ["-Z", "backtrace"] - 断言与日志:开发期用 assert! / assert_eq! / debug_assert! 捕获非法状态;上线前接入 log / env_logger 做结构化日志,便于问题复盘。
五 测试驱动与快速验证
- 快速语法与类型检查:
cargo check # 极快,不生成二进制 - 单元/集成测试:
cargo test # 定位失败时可直接进入调试 - 性能回归与热点定位:
测试先行能显著缩小问题范围,配合调试器或日志快速验证修复效果。cargo bench # 基准测试 perf record ./target/release/your_app && perf report
以上就是关于“Ubuntu Rust调试技巧有哪些”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm