断点仅标记位置,不运行代码;必须按f5启动调试会话,否则红点无效。实心红点表示激活,空心红点提示“unbound breakpoint”,常见于空行、注释行或source map未加载;需检查launch.json中type、program/file、cwd三项配置是否正确,且sourcemaps启用并匹配构建输出。

断点本身不运行代码,只标记位置;必须按 F5 启动调试会话,否则红点完全无效。
断点没反应?先确认是不是在“调试”而不是“运行”
点了右上角绿色三角(Code Runner)或终端里敲 node index.js,断点永远不会触发——那只是普通执行,没走调试协议。必须打开“运行和调试”侧边栏(Ctrl+Shift+D),选中一个配置,再点 ▶️ 启动。如果配置列表为空,点齿轮图标生成 .vscode/launch.json,别跳过这步。
- 实心红点 ✅ 表示已激活;空心红点 ❌ 表示“Unbound breakpoint”,常见于空行、注释行、函数声明行,或 source map 未加载
- 鼠标悬停断点,若提示
Unbound breakpoint,说明当前行不可中断 - 右下角状态栏检查语言模式:必须是
JavaScript、TypeScript或对应语言,不能是Plain Text
launch.json 配错三个字段,90% 断点失效
launch.json 不是摆设,它决定调试器找哪段代码、用什么环境跑、能不能读到原始变量名。错一个字段,断点就漂移或不绑定。
-
type:大小写敏感,"python"不能写成"Python";浏览器调试用"pwa-chrome",不是"chrome" -
program(Python)或file(Node.js):路径必须对,推荐用"${workspaceFolder}/src/main.py",别写./main.py(相对路径依赖cwd) -
cwd:影响import、require和文件读写。Python 报ModuleNotFoundError、Node 报Cannot find module,八成是这里设错了目录
TypeScript/前端项目断点偏移?盯紧 sourceMaps
你打在 index.ts 第 12 行,结果停在编译后的 index.js 第 3 行甚至跳过——这不是 VSCode 故障,是源码映射没对齐。
- TypeScript 项目:确保
tsconfig.json里"sourceMap": true,且没开"inlineSourceMap": true(VSCode 更认独立.map文件) - Vite 用户检查
vite.config.ts中build.sourcemap是否为true;Webpack 用户确认devtool设为'source-map'而非'eval' - Node.js 调试:在
launch.json里显式加"sourceMaps": true,否则默认可能不启用 - 前端调试时,
launch.json建议加"webRoot": "${workspaceFolder}",避免断点跳到压缩代码或空白行
条件断点不是“高级功能”,而是避免手动点十次 F5 的刚需
循环里只想看第 5 次迭代?对象属性为特定值才停?硬等太耗时间,直接上条件断点。
- 右键行号左侧 →
Add Conditional Breakpoint→ 输入i === 5或user.role === "admin" - 支持完整表达式,但注意作用域:不能访问尚未声明的变量,也不能跨函数调用链引用局部变量
- 别在条件后加
;,比如写成i === 5;会导致条件断点失效 - 想长期保留调试逻辑?可在代码末尾加注释:
console.log(data); // DEBUGGER: data.length > 10
最常被忽略的是:保存文件后再设断点,未保存的 .js/.ts 文件 VS Code 可能不识别为可执行源码;还有就是 sourceMaps 开关和构建配置必须严格匹配,差一点,断点就停在错的地方。











