vscode按f5弹出launch.json是正常提示,因调试系统为配置驱动,必须显式声明type、request、program等字段;无有效配置时无法自动推断运行方式,需通过齿轮图标生成适配已安装扩展的完整模板。

VSCode 按 F5 启动调试时弹出 launch.json 编辑界面,不是 bug,而是它在提醒你:当前项目还没有有效的调试配置——它不会自动猜你要跑什么、用什么环境、从哪开始。
为什么点 F5 一定先跳 launch.json?
VSCode 的调试系统是“配置驱动”的,没有 launch.json 就没有启动依据。它不依赖文件后缀或当前打开的代码自动推断调试方式(比如看到 index.js 就自动用 Node.js 跑),必须显式声明 type、request、program 等字段。
- 点 F5 时工作区里没有
.vscode/launch.json文件 → VSCode 弹出模板选择页 - 有
launch.json但configurations是空数组[]或只有{}→ 仍报 “No configuration”,并再次引导你生成 - 已存在配置,但
type对应的调试插件没装(如"type": "python"却没装 Python 扩展)→ 下拉菜单空白或调试直接失败
launch.json 必须由齿轮图标生成,别手写
手动敲 JSON 极易漏掉关键字段,导致断点不触发、路径报错、模块找不到——不是语法错误,而是语义缺失。
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
- 打开「运行和调试」侧边栏(
Ctrl+Shift+D),点顶部 ⚙️ 图标,VSCode 会根据已安装扩展(如 Python、C/C++、Node.js)列出模板 - 选中后生成的配置含完整注释,自动带
env、cwd、preLaunchTask等字段,且变量写法(如${workspaceFolder})已就位 - 如果没看到目标语言选项,先检查:对应扩展是否已启用?当前是否打开了该语言的文件(如
.py)?
常见语言的 program 和 type 怎么配才有效
program 不是“你想跑的源码”,而是“调试器真正执行的可运行产物”;type 必须和已安装扩展严格匹配,否则整个配置无效。
-
Node.js:
"type": "node","program": "${workspaceFolder}/dist/index.js"(不能是.ts);若用ts-node,改用"type": "pwa-node"+"runtimeExecutable": "./node_modules/.bin/ts-node" -
Python:
"type": "debugpy","program": "${file}"(单文件)或"module": "uvicorn"(Web 框架);务必确认右下角 Python 解释器指向虚拟环境内路径 -
C/C++:
"type": "cppdbg","program": "${fileDirname}/${fileBasenameNoExtension}.exe"(Windows)或"${fileDirname}/${fileBasenameNoExtension}"(Linux/macOS);"miDebuggerPath"必须填对 GDB 路径,如"C:/msys64/ucrt64/bin/gdb.exe" -
路径一律用正斜杠
/,哪怕在 Windows 上;绝对路径(如C:\project\app.js)会导致换机器失效
断点变空心圆、F5 后直接退出?先查这三处
这不是代码问题,是调试链路脱节。VSCode 显示断点灰色(空心圆),意味着它根本没把源码和可执行产物关联上。
-
sourceMap 缺失或错位(TS/JS):编译时没加
-g或sourceMaps: true,或outFiles指向错误目录;检查dist/index.js.map是否存在,且sources字段是否指向你 workspace 里的.ts路径 cwd设错(所有语言):"cwd": "${workspaceFolder}"是最安全的默认值;设成"${fileDirname}"可能导致import找不到包、open("config.yaml")读错位置-
justMyCode过滤过严(Python):默认为true,会跳过非当前工作区的代码;临时设为false看能否进断点,确认后再调回
最常被忽略的是:修改 launch.json 后必须重载窗口(Ctrl+Shift+P → “Developer: Reload Window”)才能生效,缓存会导致旧配置继续运行。










