F5能否启动调试取决于launch.json是否存在且配置正确;若文件缺失、路径错误、语言扩展未安装或type字段不匹配,F5将报“No configuration”而非快捷键失灵。

F5 能不能直接启动调试,取决于 launch.json 是否存在且配置正确——没有它,F5 就是无效按键,不是快捷键失灵,而是 VSCode 根本不知道“该用什么环境、怎么跑、跑哪个文件”。
为什么 F5 按了没反应或报“No configuration”
VSCode 的 F5 绑定的是 workbench.action.debug.start 命令,它不负责执行代码,只负责读取 .vscode/launch.json 并按其中的 configurations 启动调试器。常见触发失败的原因包括:
-
launch.json文件不存在,或路径不在工作区根目录(即.vscode/必须是项目根下的子目录) - 当前打开的文件类型未被识别(比如 .py 文件但没装 Python 扩展,或 .js 文件但没装 Node.js 扩展)
- 选错了调试环境:第一次按 F5 时弹出菜单,若误选 “Chrome” 而非 “Python”,生成的配置就无法运行 Python 文件
- 多入口项目(如含多个
main.py或package.json),VSCode 自动生成的program字段可能指向错误路径,需手动改写为"program": "${workspaceFolder}/src/main.py"
如何生成可用的 launch.json(以 Python 为例)
最稳的方式不是手敲,而是让 VSCode 自动初始化后微调:
- 确保已安装官方
Python扩展(非第三方 Code Runner) - 打开一个
.py文件,按F5→ 选择Python File→ VSCode 自动创建.vscode/launch.json - 检查生成的配置中
program字段是否指向当前文件:"program": "${file}"是通用写法;若固定调试某个入口,可改为"program": "${workspaceFolder}/app.py" - 如需传参,加
"args": ["--verbose", "test"];如需环境变量,加"env": {"PYTHONPATH": "${workspaceFolder}/lib"}
注意:type 字段必须匹配扩展名("type": "python" 对应 Python,"type": "coreclr" 对应 .NET,错一个字母就无法加载调试器)。
Ctrl+F5 不是“重新运行”,而是“强制重启调试会话”
Ctrl+F5 触发的是 workbench.action.debug.restart,它的行为依赖当前调试状态:
- 调试会话未启动时:等同于
F5,仍需launch.json,否则报错 - 调试已暂停(比如卡在断点):直接从头重启,不退出当前会话
- 调试已停止:重新加载配置并启动新会话
- 对 Spring Boot/Node.js 等长进程,它比
Shift+F5 → F5更快,但不会触发热重载逻辑——DevTools 失效时才需要它
别把它当成“运行快捷键”去绑定终端命令,那是功能错配。真要一键运行(非调试),应绑定 terminal.runActiveFile 并设置 when 条件为 editorTextFocus && !editorReadonly。
launch.json 配置生效但断点不命中?检查这三点
断点灰色空心圆、hover 显示 “Unverified breakpoint”,说明调试器加载了代码但找不到对应源文件:
- Python 项目:确认
"justMyCode": true(默认值),若断点设在第三方库中,需设为false并配合"subProcess": true - TypeScript 项目:必须有
"preLaunchTask": "tsc: build - tsconfig.json",否则调试器读的是 .ts 源码,但实际运行的是 .js,行号对不上 - 路径变量误用:
${fileBasenameNoExtension}和${relativeFile}行为不同,前者不含目录,后者含;调试器对路径敏感,拼错就加载失败
最易忽略的一点:修改 launch.json 后,必须重启调试会话(Shift+F5 再 F5),配置不会热更新。


















