Rust代码在Debian如何调试运行
导读:在 Debian 上调试运行 Rust 代码 一 环境准备 安装 Rust 工具链:使用 rustup 安装与更新。 命令:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.r...
在 Debian 上调试运行 Rust 代码
一 环境准备
- 安装 Rust 工具链:使用 rustup 安装与更新。
- 命令:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - 生效:
source $HOME/.cargo/env
- 命令:
- 安装 调试器:
sudo apt update & & sudo apt install gdb lldb
- 安装 Rust 调试组件(提升调试体验,如源码级显示、格式化打印):
rustup component add rust-srcrustup component add llvm-tools-preview
- 建议:保持使用 debug 构建 进行日常调试(Cargo 默认即为 debug),发布时再用 –release。
二 命令行调试步骤
- 编译与运行
- 调试构建:
cargo build(生成于 target/debug/) - 发布构建:
cargo build --release(生成于 target/release/)
- 调试构建:
- 使用 rust-gdb 调试
- 启动:
rust-gdb target/debug/your_project - 常用命令:
- 断点:
break main或break your_crate::your_function - 运行:
run(或continue) - 单步:
next(不进入函数)、step(进入函数) - 打印:
print variable_name - 栈回溯:
backtrace - 条件断点:
break your_function if variable_name == 42
- 断点:
- 启动:
- 使用 rust-lldb 调试
- 启动:
rust-lldb target/debug/your_project - 常用命令:
- 断点:
breakpoint set --name main或--name your_crate::your_function - 运行:
run/continue - 单步:
next/step - 打印:
frame variable或print variable_name - 栈回溯:
bt
- 断点:
- 启动:
- 崩溃时获取 backtrace
- 运行:
RUST_BACKTRACE=1 cargo run或RUST_BACKTRACE=1 ./target/debug/your_project - 提示:确保终端支持显示 Unicode,以便符号正常输出。
- 运行:
三 使用 VS Code 调试
- 安装扩展:
- rust-analyzer(语言支持)
- CodeLLDB(C/C++/Rust 调试器,适用于 LLDB 场景)
- 配置调试启动(使用 GDB 的示例 .vscode/launch.json):
- 示例:
{ "version": "0.2.0", "configurations": [ { "type": "cppdbg", "request": "launch", "name": "Debug", "program": "${ workspaceFolder} /target/debug/your_project_name", "args": [], "stopAtEntry": false, "cwd": "${ workspaceFolder} ", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "cargo build" } ] } - 如需先构建再调试,可添加 tasks.json 的
cargo build任务,并在preLaunchTask中引用。
- 示例:
四 进阶工具与技巧
- 内存与泄漏检测
- Valgrind:
sudo apt install valgrind,运行:valgrind --tool=memcheck target/debug/your_program
- Valgrind:
- 系统调用与库调用跟踪
- strace:
strace -p < PID>或strace -e trace=open,read,write your_program - ltrace:
ltrace -p < PID>或ltrace your_program
- strace:
- 快速迭代
- cargo-watch:
cargo install cargo-watch,运行:cargo watch -x run(文件变更自动构建并运行)
- cargo-watch:
- 日志与断言
- 使用 log + env_logger 输出结构化日志,或在关键位置使用 assert! / assert_eq! 捕获不变量。
五 常见问题与排查
- 断点无法命中或源码不匹配
- 确认是 debug 构建;清理后重构建:
cargo clean & & cargo build - 安装并更新 rust-src 组件,确保调试器可找到源码
- 确认是 debug 构建;清理后重构建:
- 优化导致变量不可见或步进异常
- 发布构建优化较多,优先在 debug 下调试;必要时减少优化级别进行对比
- 崩溃无 backtrace
- 设置环境变量:
RUST_BACKTRACE=1再运行;确保终端支持 UTF-8 输出
- 设置环境变量:
- IDE 调试器无法启动
- 检查 miDebuggerPath(如 /usr/bin/gdb)是否正确;确认已安装对应调试器与扩展。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Rust代码在Debian如何调试运行
本文地址: https://pptw.com/jishu/758157.html
