vscode 不支持用户级 launch.json,调试配置必须放在工作区的 .vscode/launch.json 中;用户目录或 settings.json 中的配置均被忽略,这是硬性设计限制。

VSCode 本身不支持用户级 launch.json —— 所有调试配置必须放在工作区(.vscode/launch.json)中才生效。 试图在用户设置(settings.json)里写 launch 配置,或把 launch.json 放到用户目录下,调试器根本不会读取。
为什么不能把 launch.json 放进用户设置目录
VSCode 的调试系统只从项目根目录下的 .vscode/launch.json 加载配置。它不扫描用户级路径,也不允许通过 settings.json 注入调试会话定义。这是硬性设计限制,不是权限或路径问题。
常见误操作包括:
- 把
launch.json直接丢进%APPDATA%\Code\User\(Windows)或$HOME/Library/Application Support/Code/User/(macOS)—— 完全无效 - 在用户
settings.json里加"debug.launch": {...}或类似字段—— VSCode 会忽略,且不报错 - 用命令面板执行
Debug: Open launch.json后没选“当前文件夹”,结果生成在空工作区或临时文件夹——后续无法复用
launch.json 必须放在 .vscode/ 子目录里
正确路径永远是:${workspaceFolder}/.vscode/launch.json。只要打开的是一个文件夹(而非单个文件),VSCode 就能识别并加载该配置。
创建方式要严格按流程走:
- 确保已打开一个文件夹(
File → Open Folder...),右下角状态栏显示“Folder”图标 - 按
Ctrl+Shift+P(Windows/macOS),输入Debug: Open launch.json,回车 - 选择语言(如
Python、C#、Node.js),VSCode 自动生成带version和基础configurations的文件 - 保存后,
F5或点击运行面板的绿色三角就能触发对应配置
注意:launch.json 中的 ${workspaceFolder} 是动态变量,指向你打开的那个文件夹,不是用户主目录。
想复用调试配置?别复制 launch.json,用代码片段或模板
用户级无法存调试配置,但你可以绕过这个限制:
- 把常用配置写成用户代码片段(
Configure User Snippets → New Global Snippets file),例如命名为debug-python.code-snippets,内容为:{ "python debug console": { "prefix": "dbgpy", "body": [ "{", " \"version\": \"0.2.0\",", " \"configurations\": [", " {", " \"name\": \"Python: Console\",", " \"type\": \"python\",", " \"request\": \"launch\",", " \"module\": \"__main__\",", " \"console\": \"integratedTerminal\"", " }", " ]", "}" ], "description": "Python launch config for integrated terminal" } } - 每次新建项目,在空的
.vscode/launch.json里输dbgpy+Tab,立刻补全结构 - 对 C/C++ 或 C# 等需指定
program路径的场景,片段中保留"program": "${workspaceFolder}/$1",$1可跳转编辑
真正容易被忽略的一点:调试器是否启动,和 launch.json 是否存在强绑定,但和它“在哪”无关——它必须在当前工作区的 .vscode 下,且文件名必须是 launch.json。名字错一个字母,或者多一层目录,VSCode 就当它不存在。











