VSCode调试启动失败主因是launch.json中configurations为空、program路径错误或type对应调试插件未安装;必须确保configurations非空,program为${workspaceFolder}下真实可执行文件路径,且type与已装调试器完全匹配。

VSCode 调试启动失败,90% 是因为 program 路径写错、configurations 为空,或 type 对应的调试插件没装——不是配置太复杂,而是几个关键字段没对上。
launch.json 里 configurations 不能为空数组
VS Code 点「开始调试」没反应,或报 “无法找到有效的启动配置”,大概率是 configurations 字段压根没写,或者写成了空数组 []。
- 必须确保
.vscode/launch.json文件存在,且顶层有"configurations": [ ... ] - 哪怕只配一个最简 Node.js 调试,也要包含
"type"、"request"、"name"三个字段 - 复制别人配置时删掉整个
configurations块,只剩{}或空文件,就会直接失效
program 字段必须指向可执行入口,且路径相对于工作区根目录
program 不是“当前打开的文件”,也不是“.vscode/”下的相对路径,它必须是相对于项目根目录(即 ${workspaceFolder})的、真实存在的可执行文件路径。
- Node.js 项目:填
"${workspaceFolder}/dist/index.js"(编译后),而不是"./src/index.ts"(TypeScript 源码不能直接运行) - TypeScript 项目想直调 ts 文件,得配
"type": "pwa-node"+"runtimeExecutable": "./node_modules/.bin/ts-node" - 绝对路径(如
"C:\project\index.js")会导致换机器就崩,一律用${workspaceFolder}变量 - Windows 下路径分隔符统一用正斜杠
/,别用反斜杠
launch 和 attach 模式选错,调试行为完全不对
根本区别在于:谁先启动进程。launch 是 VS Code 启动新进程并注入调试器;attach 是连到一个已经跑起来的进程。选反了,要么连不上,要么断点不命中。
- 脚本类(如
index.js、main.py)用"request": "launch",必须带program - Web 服务(Express/Fastify)、后台常驻进程、Electron 主进程,优先用
"request": "attach",避免每次改代码都重启调试会话 -
attach模式下,目标进程必须加--inspect-brk启动,且port必须和 launch.json 中的"port": 9229完全一致 - Windows 下用 cmd 启动的 node 进程有时 attach 不稳定,换成 PowerShell 或显式加
--inspect=0.0.0.0:9229
TypeScript 断点不命中?sourceMaps 和 outFiles 得一起配
断点打在 .ts 文件上却不停,不是 VS Code 问题,而是 sourcemap 没被正确识别或加载。
- 编译时必须开启
"sourceMap": true(tsconfig.json中),且关掉inlineSourceMap - launch.json 中要显式加
"sourceMaps": true和"outFiles": ["${workspaceFolder}/dist/**/*.js"] - 检查
dist/index.js.map是否真实存在,且其中sources字段指向的是你 workspace 里的.ts路径(比如["../src/index.ts"]) - 大型单体项目中,如果 map 里存的是绝对路径,可能需要
"resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"]
最容易被忽略的其实是 cwd 和 env:Python 导入失败、Node.js 找不到 .env、读文件路径错乱,往往不是 program 有问题,而是 cwd 没设成 ${workspaceFolder},或者 PYTHONPATH / NODE_ENV 没通过 env 注入进去。


















