断点不起作用主因是调试链路未接通,需确保launch.json中"type"(小写)、"program"/"module"、"console"三项配置正确,解释器路径严格一致,且source map成功加载。

断点不起作用,90% 是调试链路根本没接通,不是代码写错了,也不是插件坏了——launch.json 配错、解释器路径不一致、或 source map 没加载成功,就会全程静默跳过。
launch.json 里这三项必须对齐
launch.json 是调试启动的唯一依据,错一个字段,断点就白打。
-
"type":大小写敏感,Python 项目必须是"python"(不是"Python"或"pwa-python");Node.js 项目用"node"(老项目慎用"pwa-node") -
"program"或"module":二者只能选其一。"program": "${file}"适合单脚本;"module": "mypackage.cli"适合python -m启动方式;混用会导致模块导入失败,断点设了也进不去 -
"console":优先设为"integratedTerminal"。Windows 下"externalTerminal"常因权限或路径解析失败,导致调试器启动即退出
解释器/运行时路径必须严格一致
VS Code 调试器只认一个路径:它得和你实际执行代码用的解释器完全相同。
- 底部状态栏必须显示完整路径,比如
/myproj/.venv/bin/python或C:\dev\app\.venv\Scripts\python.exe;只显示 “Python 3.11.9” 说明解释器没真正选中 - 在调试控制台运行
import sys; print(sys.executable),输出必须和状态栏、终端里which python(或where python)结果完全一致 - Node.js 项目要确认 VS Code 内置终端能跑通
node -v;它不读 shell 的.zshrc,macOS/Linux 需手动往settings.json的terminal.integrated.env.osx里加PATH
TypeScript/前端项目断点变空心?source map 没加载
空心断点 = VS Code 看到了那行,但无法把 JS 行号映射回 TS 源码——不是没生成 .map,而是加载链断了。
-
tsconfig.json必须有"sourceMap": true,且"inlineSourceMap": false(独立.map文件更稳定) -
launch.json中"outFiles"必须精确匹配构建输出路径,例如"${workspaceFolder}/dist/**/*.js";写成"./dist/**"(缺.js)或"dist//**/*.js"(双斜杠破坏 glob)都会失败 - 多包项目(如
packages/foo/src)必须配"resolveSourceMapLocations",比如["${workspaceFolder}/packages/**/src/**", "!**/node_modules/**"];否则调试器默认跳过非src/路径
别被“实心红点”骗了,看调试控制台才是关键
断点变实心 ● 只代表标记成功,不代表符号表已加载。真正有效的证据只有一条:
- 打开「调试控制台」(Debug Console),搜索
Loaded source map from:—— 出现这条日志,才说明 source map 已成功加载并解析 - 如果看到
404或路径指向node_modules,说明outFiles扫错了目录,或构建产物根本没生成.map文件 - 路径含中文或空格(尤其 Windows)会导致
debugpy或node静默失败,临时移到C:\dev\myproj这类纯英文无空格路径测试


















