VSCode调试“总是中断”八成是launch.json配置错误:program路径无效、type与扩展不匹配或request模式用反。需确保program指向真实可执行文件,type字段匹配已装调试扩展(如C++用cppdbg、Python用debugpy),request严格区分launch(配program)和attach(配port),并验证sourceMap、cwd及环境一致性。

VSCode调试“总是中断”,八成不是代码崩溃,而是 launch.json 里某个字段和真实执行链路没对齐——尤其是 program 路径无效、type 和已装扩展不匹配、或 request 模式用反了。
program 路径写错,调试直接退出或报 “program does not exist”
VSCode 不会自动猜你打算跑哪个文件,它只按 program 字段的字面值去找可执行入口。路径错一点,就会启动失败、闪退、或卡在“正在启动调试器”不动。
-
program必须是相对于${workspaceFolder}的**真实存在**的可执行路径,不能是.ts、.py源码(除非配了runtimeExecutable),更不能是命令行字符串如"-m http.server" - C/C++ 项目中,
program必须指向带-g编译出的二进制文件,比如"${workspaceFolder}/build/hello";填hello.cpp肯定报错 - TypeScript 项目若用
ts-node,得写"program": "${workspaceFolder}/src/index.ts"+"runtimeExecutable": "ts-node";只写program指向.ts文件但没配runtimeExecutable,会提示无法识别文件类型 - Windows 下路径统一用正斜杠
/,别用反斜杠\;绝对路径如C:/project/app.js看似能用,但换机器就失效,应始终用变量
type 和 request 不匹配已安装扩展,调试面板空白或报 “Cannot find debug adapter”
type 不是随便写的标签,它是 VSCode 去找对应调试器扩展的“钥匙”。钥匙错了,门打不开,F5 按下去毫无反应。
- Python 项目现在必须用
"type": "debugpy"(依赖ms-python.python扩展),写"python"是旧写法,已失效 - Node.js 项目要用
"type": "pwa-node"(依赖JavaScript Debugger扩展),"node"已被弃用;C++ 项目必须用"cppdbg"+ 安装C/C++扩展,缺一不可 -
request: "launch"和request: "attach"是两种完全不同的启动逻辑:launch要配program或module;attach必须带port,且目标进程得提前用--inspect-brk=9229启动 - 如果调试面板下拉菜单为空,先打开 Extensions,确认对应语言的调试扩展已启用(比如 Go 调试必须装
Go官方扩展,不是第三方 Debugger for Go)
断点变空心圆?不是代码问题,是源码映射断了
断点灰色(○)意味着调试器找到了进程,但没法把“你在哪行打的断点”和“运行时实际指令地址”对应上。根源通常不在编辑器,而在构建或配置层。
- TypeScript 项目:必须同时满足三件事——
tsconfig.json中"sourceMap": true、launch.json中"sourceMaps": true且"outFiles": ["${workspaceFolder}/dist/**/*.js"]、dist/index.js.map文件真实存在且其中sources字段指向你 workspace 内的.ts路径 - C/C++ 项目:运行
file ./your_program,输出里必须含with debug_info;没有就说明编译漏了-g,tasks.json的args里得加上 - Python 项目:
"justMyCode": true是默认值,会跳过所有非当前工作区代码;临时改成false能快速验证是否因入口识别失败导致断点被过滤——但别留着,否则会拖慢调试并进入site-packages - 所有语言都要检查
cwd:比如代码里写了open("config.yaml"),而cwd没设成项目根目录,就会报FileNotFoundError,看起来像“中断”,其实是运行时异常
改完 launch.json 没生效?别跳过重载和环境确认
VSCode 的调试状态有缓存,改完配置不等于立刻接管进程。很多“中断”其实是旧配置残留或环境错位造成的假象。
- 修改
launch.json后,务必关闭当前调试会话,再点 F5 —— 不要以为“正在调试中按 F5”会热更新配置 - 左下角确认 Python 解释器路径是否指向虚拟环境内的
python(如./venv/bin/python),而不是系统全局的;Node.js 项目也要确认终端里which node和 VSCode 内部用的是否一致 - 某些框架(如 FastAPI、Uvicorn)建议用
module字段而非program:"module": "uvicorn"+"args": ["main:app", "--reload"];硬塞命令到program会导致参数解析失败,进程启动即退出 - 前端+后端联调不要指望单个
configuration解决,得用compounds组合多个配置,否则必然出现“一个起来了另一个挂了”的中断现象
最常被忽略的一点:launch.json 不该手写。Ctrl+Shift+D 打开「运行和调试」侧边栏,点顶部 ⚙️ 图标,让 VSCode 根据已安装扩展自动生成——它会帮你填好 env、preLaunchTask、console 这些容易遗漏但关键的字段。


















