CentOS 下高效调试 Rust 的实用技巧
一 基础配置与符号信息
sudo yum install -y gdb lldb。调试器需要可执行文件包含调试符号,才能查看变量、栈帧与源码行号。[profile.release] debug = true。let y = dbg!(x * 2) + 1;。#[cfg(debug_assertions)] 包裹仅调试用的函数/日志,避免发布构建中引入额外开销。二 命令行调试 GDB 与 LLDB
cargo build(产物在 target/debug/),启动:gdb target/debug/your_app。cargo build --release 并在 Cargo.toml 中设置 [profile.release] debug = true,启动:gdb target/release/your_app。break main.rs:10(断点)、run(运行)、step/next(单步步入/步过)、continue(继续)、print x(打印变量)、backtrace(栈回溯)。breakpoint set --file main.rs --line 10、run、step/next、print x、bt。~/.gdbinit 加入:set print pretty on,必要时添加 -enable-pretty-printing 到初始化命令,使结构体和枚举输出更可读。三 VS Code 远程调试配置
type: "lldb", request: "launch", program: "${workspaceFolder}/target/debug/your_app"type: "lldb", request: "launch", cargo: { args: ["test", "--no-run", "--lib", "--", "${fileBasenameNoExtension}"] }RUST_BACKTRACE=full,获取完整回溯。四 崩溃与性能问题的定位
ulimit -c unlimited,复现崩溃后用 gdb target/debug/your_app core 分析,bt 查看回溯。/var/log/messages 或 journalctl 常见输出形如 segfault at <addr> rip <ip> rsp <rsp> error <code>,提示非法访问地址与错误类型。RUST_BACKTRACE=full 可在控制台输出完整堆栈,便于快速锁定 panic 位置与调用链。五 常见问题与排查清单
Cargo.toml 中开启 [profile.release] debug = true,重新构建后再调试。set print pretty on,或在 LLDB 初始化命令中加入 -enable-pretty-printing。cargo build,且 program 路径与构建产物一致;必要时在 VS Code 的调试配置中显式指定绝对路径。RUST_BACKTRACE=full;若仍无,检查是否因 panic = "abort" 或信号被处理导致信息受限。