在Debian上调试Rust前,需安装必要工具链:

rustup安装最新稳定版,添加~/.cargo/bin到PATH:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shsource ~/.cargo/envgdb(GNU Debugger)或lldb(LLVM Debugger),推荐安装两者以备不同需求:sudo apt update && sudo apt install gdb lldbrust-src(提供Rust源码)和llvm-tools-preview(支持LLVM工具链):rustup component add rust-src llvm-tools-preview调试时需保留符号表和调试信息,避免使用--release模式(除非需性能分析):
cargo build# 默认生成带调试信息的可执行文件(target/debug/your_project)若需发布模式但保留调试信息,可在Cargo.toml中配置:
[profile.release]debug = true# 保留调试符号Rust提供了针对gdb/lldb的包装器,自动加载Rust调试信息,提升体验:
rust-gdb target/debug/your_project# 使用GDBrust-lldb target/debug/your_project# 使用LLDBbreak <函数名/文件:行号>:设置断点(如break main或break src/main.rs:10);next(n):单步执行(不进入函数);step(s):单步执行(进入函数);continue(c):继续执行至下一个断点;print <变量名>(p):打印变量值(如print x);backtrace(bt):查看调用栈(定位崩溃位置);frame <编号>:切换调用栈帧(查看不同层级的变量)。println!("{:?}", 变量):打印变量值(需手动添加,适合简单调试);dbg!(变量):更便捷的打印方式,自动输出变量值、文件名及行号(如dbg!(x));println!("{:#?}", 结构体):美化打印结构体(显示层级结构)。RUST_BACKTRACE环境变量:程序崩溃时,设置该变量获取完整调用回溯(帮助定位崩溃原因):RUST_BACKTRACE=1 cargo run# 临时启用RUST_BACKTRACE=full cargo run# 显示完整回溯(包括所有帧)sudo apt install valgrindvalgrind --tool=memcheck target/debug/your_projectlog+env_logger记录程序运行日志(适合复杂项目):use log::{info, error};fn main() {env_logger::init();// 初始化日志info!("Program started");// 记录info日志error!("Something went wrong!");// 记录error日志}运行时设置日志级别:RUST_LOG=info cargo run# 显示info及以上级别日志rust-analyzer(代码补全)和CodeLLDB(调试)扩展,通过内置调试面板设置断点、查看变量;glibc版本不兼容导致的问题(如服务器环境),在.cargo/config.toml中配置:[target.x86_64-unknown-linux-gnu]rustflags = ["-C", "target-feature=+crt-static"]然后编译:cargo build --releasecargo deb打包Debian软件包,默认会剥离调试符号。可通过以下方式保留:Cargo.toml中设置[profile.release].debug = true;cargo deb --separate-debug-symbols将调试符号打包为单独文件(便于后续调试)。cargo-watch在文件修改时自动重新编译并运行(加速迭代调试):cargo install cargo-watchcargo watch -x run# 监听文件变化并运行