VSCode调试失败90%因launch.json语义错误:program路径必须指向可执行文件且相对于工作区根目录,type需匹配已安装调试器(如pwa-node),request须与program或port对应,配置修改后需重载窗口生效。

VSCode 调试起不来,90% 是 launch.json 里几个字段写错了——不是语法错,而是语义错:路径不对、type 和插件不匹配、request 模式选反了。
program 字段必须指向可执行文件,且路径相对于工作区根目录
报错 “Could not find program” 或启动后立即退出,基本是 program 值无效。
-
program不能是./src/index.ts(Node.js 不认识 ts 文件),也不能是index.js(没加引号或路径不全) - 正确写法是:
"program": "${workspaceFolder}/dist/index.js"(编译后)或"program": "${workspaceFolder}/src/index.ts"+ 配合runtimeExecutable: "ts-node" - TypeScript 项目务必确认
dist/index.js和dist/index.js.map真实存在,且sources字段指向你 workspace 里的.ts路径 - Windows 下统一用正斜杠
/,别用\;绝对路径(如C:/project/app.js)会导致换机器失效
type 和 request 必须成对匹配,且对应已安装的扩展
调试器根本没反应,或提示 “Cannot connect to runtime process”,大概率是 type 写错或缺少对应插件。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
-
"type": "node"已被弃用,Node.js 项目请用"type": "pwa-node"(需安装官方 JavaScript Debugger 扩展) -
"type": "python"要求已安装 Python 扩展,且python.defaultInterpreterPath指向虚拟环境内的python可执行文件 -
request: "launch"必须带program;request: "attach"必须带port(如9229),且目标进程得用node --inspect-brk=9229 index.js启动 - Chrome 调试要用
"type": "pwa-chrome",不是"chrome"(旧版 Debugger for Chrome 已停更)
断点不命中?先关掉 justMyCode 或检查 cwd
代码能跑、终端有输出,但断点灰色、变量看不到、调用栈空——不是代码问题,是调试上下文没对上。
- Python 默认
"justMyCode": true,会跳过所有非当前工作区的代码。临时改成false看是否能进断点,确认后再调回 -
cwd(current working directory)必须设为项目根,比如"cwd": "${workspaceFolder}";否则open("config.yaml")会去错目录找 - Node.js 调试时,
"console": "integratedTerminal"是刚需。设成"internalConsole"会导致process.stdin失效、日志不显示 - FastAPI/Flask 等 Web 框架建议用
module字段替代program,例如"module": "uvicorn"+"args": ["main:app", "--reload"]
configurations 数组不能为空,且至少一项含完整必填字段
点“开始调试”没反应、下拉菜单空白、报 “No configuration”——不是 VSCode 坏了,是配置结构残缺。
-
configurations是数组,不能是[],也不能是{}或缺失该字段 - 每个配置对象必须含
name、type、request;launch模式还必须有program;attach模式必须有port - 复制别人配置时,常误删整个
configurations块,只剩{"version":"0.2.0"}—— 这个文件等于没配 - 多个配置共存时,
name别都叫 “Debug”,建议带上模式和环境,比如"Launch (dev)"、"Attach to API (staging)"
最易被忽略的一点:VSCode 不会自动 reload launch.json。改完保存后,必须手动关闭再打开调试侧边栏,或按 Ctrl+Shift+P → 输入 “Developer: Reload Window” 才生效。

















