launch.json 专用于调试配置,必须放在 .vscode 目录下,定义启动方式、环境变量等;settings.json 仅控制编辑器行为,不参与调试逻辑。

launch.json 是干调试的,settings.json 是管编辑器行为的
很多人一上来就往 settings.json 里塞调试参数,结果断点不生效、launch 按钮灰掉——因为 VSCode 的调试逻辑完全不读 settings.json 里的调试相关配置。所有启动方式、环境变量、程序入口、端口监听这些,必须写在 .vscode/launch.json 里。而 settings.json 只影响编辑器本身:比如字体大小、是否自动保存、文件编码、格式化工具路径等。
launch.json 必须放在 .vscode 目录下,且只对当前项目生效
launch.json 不是全局配置,它只在当前工作区根目录下的 .vscode/launch.json 路径才被识别。如果你把它放错位置(比如放在用户目录或子文件夹),VSCode 根本不会加载,调试面板里连配置项都看不到。
- 正确路径:
.vscode/launch.json - 错误路径:
launch.json(项目根下无.vscode)、src/launch.json、~/.vscode/launch.json - 一个
launch.json可以定义多个configurations,用name区分,比如"name": "Python: Current File"和"name": "Node.js: Express" - 如果项目里没有
launch.json,点击调试面板的「创建 launch.json 文件」按钮会自动生成模板,别手动新建空文件
settings.json 里的调试相关字段基本无效
你可能会看到文档里提到 debug.node.autoAttach 或 debug.javascript.autoAttachFilter 这类设置,它们确实存在,但作用非常有限:仅控制“自动附加”这种特殊调试模式的行为,**不是用来替代 launch.json 的常规启动配置**。想跑一个带参数的 Python 脚本?想传 env 变量?想改 cwd?这些全得靠 launch.json 的 configurations 字段。
-
settings.json中的python.defaultInterpreterPath影响解释器选择,但它不决定调试时用哪个 interpreter——那个由launch.json里的python字段或pyLaunch类型配置决定 -
debug.javascript.usePreview这类开关只影响 JS 调试器底层行为,不影响 launch 流程 - 误把
args、env、program写进settings.json,VSCode 完全忽略,也不会报错
常见错误:launch.json 配置不匹配运行时环境
最典型的坑是语言扩展没装、类型写错、路径没转义,导致调试直接失败,报错信息却很模糊,比如 Could not resolve debug adapter 或 Cannot launch program because corresponding JavaScript file cannot be found。
- 确认已安装对应语言的官方调试扩展:Python 扩展含 Python Debugger,JavaScript 需要 @vscode/js-debug,Go 需要 Go 扩展
-
type字段必须小写且准确:"type": "python"、"type": "pwa-node"、"type": "go"—— 写成PYTHON或node都会失败 - 路径字段如
program、cwd推荐用${workspaceFolder}变量,避免硬编码;Windows 下反斜杠要写成\或用正斜杠/ - Python 的
module模式(如"module": "http.server")和program模式不能混用;Node.js 的pwa-node类型不支持outFiles,要用sourceMaps+resolveSourceMapLocations
调试配置真正起效的地方只有 launch.json,而且它极其依赖扩展、类型声明和路径语义的精确匹配。哪怕多一个空格、少一个引号、变量名拼错,VSCode 都可能静默忽略整个 configuration。别猜,打开调试面板右上角的齿轮图标,选「Open launch.json」,对着报错信息一行行核对字段名和值类型。











