断点生效必须启动调试会话,仅设红点无效;需按F5或点击调试图标▶️启动,确认launch.json中type、program/file、cwd配置正确,并启用sourceMaps对齐源码。

断点本身不运行代码,VSCode 里点一下行号左边的红点只是“标记位置”,真正让程序停在那里,必须启动调试会话(按 F5 或点调试图标 ▶️),否则代码照常执行、断点完全无效。
断点没反应?先确认是不是在“调试”而不是“运行”
这是新手最常卡住的地方:点了右上角绿色三角(Run Code)或终端里敲 node index.js,断点永远不会触发——因为那只是普通执行,没走调试协议。
- 必须打开“运行和调试”侧边栏(
Ctrl+Shift+D/Cmd+Shift+D),选中一个配置,再点 ▶️ 启动 - 如果配置列表为空,点齿轮图标生成
.vscode/launch.json,别跳过这步 - 断点启用状态看颜色:实心红点 ✅ 表示已激活;空心红点 ❌ 表示没加载进当前调试会话
launch.json 里这三个字段写错,90% 断点不生效
VSCode 不执行代码,它靠 launch.json 告诉底层调试器(如 debugpy、js-debug)怎么跑。配错就等于“发错指令”。
-
type:大小写敏感,"python"不能写成"Python";浏览器调试用"pwa-chrome",不是"chrome" -
program(Python)或file(Node.js):路径必须对。推荐用"${workspaceFolder}/src/main.py",别写./main.py(相对路径依赖cwd) -
cwd:影响import和文件读写。Python 报ModuleNotFoundError,八成是这里设错了目录
JavaScript/TypeScript 断点偏移或消失?盯紧 sourceMaps
你打在 index.ts 第 12 行,结果停在编译后的 index.js 第 3 行甚至跳过——这不是 VSCode 故障,是源码映射没对齐。
- TypeScript 项目:确保
tsconfig.json里"sourceMap": true,且没开"inlineSourceMap": true(VSCode 更认独立 .map 文件) - Webpack/Vite:构建时加
devtool: 'source-map'或build.sourcemap: true,并确认.js.map文件真生成了、跟.js同目录 - Node.js 调试:在
launch.json里显式加"sourceMaps": true,否则默认可能不启用
条件断点不是“高级功能”,而是避免手动点十次 F5 的刚需
循环里只想看第 5 次迭代?对象属性为特定值才停?硬等太耗时间,直接上条件断点。
- 右键行号左侧 →
Add Conditional Breakpoint...→ 输入i === 5或user.role === "admin" - 支持完整表达式,但注意作用域:不能访问尚未声明的变量,也不能跨函数调用链引用局部变量
- 想长期保留调试逻辑?在代码末尾加注释:
console.log(data); // DEBUGGER: data.length > 10,VSCode 会自动识别
真正难的从来不是“怎么打点”,而是理解断点背后依赖的整个链路:调试器插件是否装对、launch.json 是否匹配实际运行方式、源码和运行时是否通过 sourceMaps 对齐——漏掉任意一环,红点就只是个装饰。











