断点不生效主因是调试会话未真正启动,需确认按f5或调试图标▶️启动而非绿色三角、底部状态栏显示“调试正在运行”、launch.json中type字段大小写正确(如"python"或"node")且配置完整。

断点不生效?先确认调试会话是否真正启动
VSCode里点一下行号旁的红点只是标记位置,不是执行指令。断点必须配合调试会话才能生效——按 F5 或点击调试图标 ▶️ 启动,而不是右上角绿色三角(Run Code)或终端直接运行。
常见错误现象:红点是空心的、程序飞快跑完、底部状态栏没有「调试正在运行」字样。这说明调试器压根没连上进程。
- 如果「运行和调试」侧边栏(
Ctrl+Shift+D)里配置为空,必须点齿轮图标生成.vscode/launch.json,不能跳过这步 -
launch.json中type大小写敏感:"node"不能写成"Node";Python 必须是"python"或"debugpy",不是"Python" - 启动后看底部状态栏右侧,有蓝色「调试正在运行」且带进程 ID 才算真正附着成功
Node.js 断点不命中?重点查三处配置
Node.js 调试失败,90% 出在 launch.json 的三个字段没对齐运行时环境。
-
type必须为"node"("pwa-node"是旧插件写法,新版js-debug不认) -
program要指向真实可执行入口,推荐用"${workspaceFolder}/src/index.js";若用 ES 模块,必须加"runtimeArgs": ["--loader", "ts-node/esm"] - 项目用
npm run dev启动(如 Vite/Next),别配request: "launch",改用request: "attach"并确保服务已启动、port匹配(通常 9229) - ESM + TypeScript 项目务必检查
tsconfig.json中"sourceMap": true且未开启"inlineSourceMap": true
Python 调试总断不住?module 比 program 更可靠
尤其在包结构、pip install -e . 或框架(Flask/FastAPI)场景下,program 路径容易失效,module 模式更稳定。
- 优先用
"module": "myproject.cli"(对应python -m myproject.cli),而非"program": "./src/main.py" -
python.defaultInterpreterPath必须指向虚拟环境解释器,例如"./venv/bin/python";系统 Python 很可能没装debugpy - 多进程训练(如 PyTorch
DataLoader(num_workers>0))需显式开启"subProcess": true - 想进框架源码(比如看 Flask 的
route内部),必须设"justMyCode": false
C/C++ 和前端调试:sourceMap 和路径对齐是命门
C 程序断点偏移、Vue/React 断点停在 dist/ 文件里、变量名变成 _a —— 这些都不是 VSCode 故障,而是 sourceMap 加载失败或路径映射错位。
- C 项目:编译命令必须带
-g(tasks.json中args加"-g"),launch.json的miDebuggerPath要指向真实gdb或lldb可执行文件 - 前端项目:
webRoot必须精确匹配开发服务器根目录,例如"${workspaceFolder}/public";sourceMapPathOverrides如"webpack:///src/*": "${webRoot}/*"缺一不可 - Vite 用户确认
build.sourcemap为true,且开发服务器未启用minify;Webpack 项目推荐devtool: 'eval-source-map'('source-map'在 HMR 下常失效)
sourceMap 文件没生成到预期位置,断点都会静默失效。











