温馨提示×

rust在linux咋调试

小樊
44
2026-10-15 20:54:18
栏目: 编程语言

在 Linux 下调试 Rust 程序,常见、好用的方法主要有以下几类,从入门到进阶给你梳理一下。


一、最常用:使用 GDB / LLDB 调试

Rust 编译出的就是普通 ELF 二进制,可以直接用 C/C++ 调试器。

1. 准备工作

cargo build  # 或
cargo build --debug

默认就是 debug 模式,包含符号信息

安装调试器:

# Ubuntu / Debian
sudo apt install gdb

# 想用 lldb
sudo apt install lldb

2. 用 GDB 调试

gdb target/debug/your_program

常用命令:

run
break main
break src/main.rs:20
next
step
print x
backtrace

⚠️ Rust 的变量名可能被 mangled,可读性一般。


3. 用 Rust 友好的 GDB(推荐)

rust-gdb target/debug/your_program

或:

rust-lldb target/debug/your_program

它们会:

  • 美化 Rust 类型
  • 更好显示 String, Vec, Option 等

二、VS Code 图形化调试(强烈推荐)

1. 安装插件

  • Rust Analyzer
  • CodeLLDB(最常用)

2. 配置 launch.json

{
  "type": "lldb",
  "request": "launch",
  "name": "Debug",
  "program": "${workspaceFolder}/target/debug/your_program",
  "args": [],
  "cwd": "${workspaceFolder}"
}

然后:

  • 打断点
  • F5 启动
  • 变量、调用栈一目了然

✅ 这是最舒服的 Rust 调试方式


三、日志调试(非常常用)

1. 使用 println!

println!("x = {:?}", x);

2. 使用 log + env_logger

[dependencies]
log = "0.4"
env_logger = "0.11"
use log::{info, warn};

fn main() {
    env_logger::init();
    info!("starting");
}

运行:

RUST_LOG=debug cargo run

四、panic 和 backtrace

1. 显示 backtrace

RUST_BACKTRACE=1 cargo run

或:

RUST_BACKTRACE=full cargo run

五、异步 / Tokio 调试

如果是 tokio:

[dependencies]
tokio = { version = "1", features = ["full"] }

调试技巧:

  • 用 tokio-console
  • 或直接在异步函数里打日志

六、常见调试技巧总结

场景 推荐方式
新手 println! + RUST_BACKTRACE
逻辑错误 VS Code + LLDB
崩溃 GDB / backtrace
并发问题 日志 + sanitizer
性能 perf, flamegraph

七、进阶(可选)

  • cargo flamegraph
  • valgrind
  • sanitizer:
RUSTFLAGS="-Z sanitizer=address" cargo run

如果你愿意,可以告诉我:

  • 你是 命令行党还是 VS Code 党
  • 调试的是 普通程序 / 多线程 / async

我可以给你更具体的配置示例。

0 踩