断点不生效主因是rust-analyzer未加载、构建产物缺失或调试器attach错误;需确保rust-analyzer正常启动、cargo build生成target/debug文件、CodeLLDB通过cargo字段而非硬编码program路径配置。

断点不生效,基本不是配置漏了,而是 rust-analyzer 没加载成功、构建产物没生成、或调试器 attach 错了进程——三者缺一不可。
rust-analyzer 必须先跑通,否则断点全失效
rust-analyzer 不是“锦上添花”的插件,它是整个调试链路的起点。它负责解析 Cargo.toml、定位 target/debug/ 下的符号文件,并把路径告诉 CodeLLDB。如果它卡在 rust-analyzer (loading) 或报 Failed to run cargo metadata,后续所有断点都会灰掉、不命中。
- 确保 VSCode 是从终端启动的:
code .(尤其 macOS/Linux,否则 PATH 里没有cargo) - 项目根目录必须有合法的
Cargo.toml(至少含[package]和name字段),不能只打开单个src/main.rs - 首次打开后等状态栏左下角图标停止旋转;长期卡住可执行:
cargo clean+ 删除Cargo.lock+Ctrl+Shift+P→Rust Analyzer: Reload Workspace - 运行
rustup component add rust-src,否则无法跳转标准库、调试时看不到Vec内部结构
CodeLLDB 的 launch.json 必须匹配 cargo 构建行为
VSCode 默认生成的 launch.json 容易和实际构建脱节。常见错误是硬编码 "program": "./target/debug/my_project",但你根本没运行过 cargo build,或者改了代码却忘了 rebuild —— 这时候调试器会静默失败或报 File not found。
- 务必先在集成终端中手动运行一次
cargo build(或cargo run),确保target/debug/下有可执行文件 - 推荐用
cargo字段驱动构建,而不是写死program路径:{ "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug", "cargo": { "args": ["build"], "filter": { "name": "my_project", "kind": "bin" } }, "env": {"RUST_LOG": "debug"} } ] } - 如果断点打在
tests/或examples/里,需在Cargo.toml中显式开启调试信息:[profile.dev] debug = true
Tauri 项目要拆开前后端进程才能调试 Rust 后端
tauri dev 把前端 dev server 和 Rust 后端绑在一个流程里启动,但 CodeLLDB 只能 attach 到 cargo 启动的独立进程。直接在 tauri dev 下打断点,src-tauri/src/main.rs 里的 #[tauri::command] 函数永远不触发。
- 必须在项目最外层目录(含
tauri.conf.json和src-tauri)创建Cargo.toml,内容仅两行:[workspace] members = ["src-tauri"]
- VSCode 打开的是外层目录,不是
src-tauri子目录;之后执行Rust Analyzer: Reload Workspace - 前端单独起 dev server(如
pnpm run dev),Rust 后端用cargo run启动并 attach 调试器,两者通过devPath关联,但进程完全分离
最容易被忽略的一点:Windows 用户若没装 Build Tools for Visual Studio,cargo build 会链接失败,导致根本生成不了可执行文件——这时候连 target/debug/ 目录都不存在,CodeLLDB 自然无从 attach。











