断点不命中八成是launch.json配置与真实环境不匹配:type必须对应已安装调试器扩展(如c++需cppdbg+“c/c++”扩展),program须为带-g编译的绝对路径可执行文件,非源码;request、cwd、sourcemap/-g等开关需协同生效。

断点不命中,八成不是代码或操作问题,而是 launch.json 里某个字段和真实执行环境没对齐——尤其是 program/module、type、cwd 和调试器扩展状态这四块。
launch.json 的 type 和 request 必须匹配已安装的调试器
VSCode 不会自动猜你用什么调试器,type 字段必须和你装的扩展完全对应。比如 Python 项目写 "type": "python" 是旧写法,现在得用 "type": "debugpy"(需安装官方 ms-python.python 扩展);Node.js 项目不能写 "type": "node",得用 "type": "pwa-node"(依赖 JavaScript Debugger 扩展)。
- 没装对应扩展时,
type写对了也白搭:调试面板下拉菜单为空、点 F5 没反应、控制台报Cannot find debug adapter -
request必须和type协同:"request": "launch"要配program或module;"request": "attach"则必须带port,且目标进程得提前用--inspect=9229启动 - C++ 项目若用了
"type": "cppdbg",但没装 C/C++ 扩展,断点直接灰化,hover 提示unverified breakpoint
program 和 module 不是二选一,是运行方式的镜像
VSCode 不读你心里想的命令,它只按 launch.json 字面执行。你在终端敲 python src/app.py,就得配 "program": "${workspaceFolder}/src/app.py";敲 python -m uvicorn main:app --reload,就得配 "module": "uvicorn" + "args": ["main:app", "--reload"]。
-
"program": "-m http.server"是典型错误:VSCode 会把它当文件名去找,报File not found;正确写法是"module": "http.server" - TypeScript 项目不能把
.ts文件塞进program:Node.js 不认识它,得配"runtimeExecutable": "ts-node",或先编译出.js再指向"program": "${workspaceFolder}/dist/index.js" - C++ 项目中
program必须是编译后的可执行文件路径(如"${workspaceFolder}/build/hello"),不是.cpp源文件
断点灰色?先查 -g、sourceMap、justMyCode 这三个开关
断点变空心圆,本质是调试器无法把源码位置映射到运行时指令地址。不同语言触发条件不同,但核心就三个开关:
- Python:默认
"justMyCode": true,会跳过所有非当前工作区代码;临时改成false能快速验证是否入口识别失败(但别留着,会拖慢调试并进入site-packages) - C/C++:检查生成的可执行文件是否含调试信息——运行
file ./your_program,输出里必须有with debug_info或dwarf,不能是stripped;Makefile 或 CMakeLists.txt 中必须显式加-g -O0,禁用优化 - JavaScript/TypeScript:必须生成且加载
.map文件;tsconfig.json中设"sourceMap": true,launch.json中加"sourceMaps": true和"outFiles": ["${workspaceFolder}/dist/**/*.js"],并确认dist/index.js.map真实存在
cwd 和 PYTHONPATH 错一位,ImportError 就跟着来
cwd 不只是影响 open("config.yaml"),它决定 import 路径起点。VSCode 默认以工作区根为 cwd,但你的代码可能在 src/ 下运行,或依赖 src/ 在 sys.path 里。
- Python 项目常见翻车:
"cwd": "${workspaceFolder}"配了,但from utils import helper报错——因为utils/在src/下;应改"cwd": "${workspaceFolder}/src",或加"env": {"PYTHONPATH": "${workspaceFolder}/src"} - Node.js 项目若用
require("./config"),cwd错了就找不到文件;"console": "integratedTerminal"必须设,否则process.stdin失效 - Windows 用户注意:路径一律用正斜杠
/,"program": "C:\project\app.js"会导致换机器失效,应写"program": "C:/project/app.js"
最常被忽略的是:修改 launch.json 后没重载窗口,或解释器路径和终端不一致。右下角 Python 解释器路径必须和 python -c "import sys; print(sys.executable)" 输出完全相同——差一个字符,import 就可能失败,断点自然悬空。











