根本原因是vscode的f5调试不自动编译,只运行已存在的可执行文件;必须先通过tasks.json配置g++编译(含-g参数),再在launch.json中精确匹配输出路径,确保program字段指向真实生成的a.out或main.exe。

VSCode里按F5跑C++直接报错“launch: program ‘…/a.out’ does not exist”
根本原因是VSCode默认不编译,只尝试运行——它想找一个现成的可执行文件,但你还没生成它。g++ 没执行过,a.out 或 main.exe 根本不存在。
解决路径很直:必须先编译,再调试。不能跳过构建环节。
- 确保已安装
g++(Linux/macOS)或MinGW-w64/MSVC(Windows),并在终端输入g++ --version能正常返回 - 在VSCode中右键
main.cpp→ “Run Code” 是快捷方式,但它依赖插件(如 Code Runner),和 F5 调试走的是两套逻辑 - F5 调试必须配
launch.json,且里面program字段指向的路径得是真实存在的可执行文件——所以得先让tasks.json把它编译出来
怎么配 tasks.json 让 Ctrl+Shift+B 编译成功
这是最常卡住的一步:VSCode不知道该用什么命令编译,也不清楚要不要链接标准库、是否启用C++17等。
手动建 .vscode/tasks.json,核心是填对 args ——尤其注意 -o 输出路径要和 launch.json 里一致,且别漏掉 -g(否则调试时看不到变量):
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
}
}
]
}
- Windows用户把
command改成"C:\msys64\ucrt64\bin\g++.exe"这类实际路径,别写g++(环境变量在 tasks 里不一定生效) -
${fileBasenameNoExtension}生成的可执行文件名不含 .cpp 后缀,比如main.cpp→main(Linux/macOS)或main.exe(Windows),launch.json必须严格匹配这个名 - 如果用了
#include <vector></vector>却报 undefined reference,大概率是漏了-std=c++17或类似参数
launch.json 的 program 字段填绝对路径还是相对路径
填相对路径更稳。VSCode调试器启动时工作目录(cwd)默认是打开的文件夹根目录,不是源文件所在目录。
- 推荐写成
"${fileDirname}/${fileBasenameNoExtension}"——这样不管你在哪个子文件夹开的VSCode,都能找到同目录下的可执行文件 - 如果写成
"./build/main",但实际没建build/目录,或tasks.json输出到了别处,就会失败 - Windows下注意路径分隔符不用改,
${fileDirname}自动返回带反斜杠的路径,launch.json完全接受 - 加一行
"externalConsole": true,否则cin/scanf可能卡住(尤其 Windows + MinGW)
Code Runner插件点“运行”却输出乱码或一闪而过
这是最表象也最容易误判的问题:你以为是VSCode配置错了,其实是终端编码或执行环境问题。
- 中文输出乱码?在 Code Runner 设置里搜
code-runner.runInTerminal,设为true;再进 VSCode 设置搜terminal integrated env,给 Windows 加上"terminal.integrated.env.windows": {"CHCP": "65001"} - 窗口一闪而过?不是程序崩了,是执行完就退出。加一句
std::cin.get();在末尾,或改用终端运行模式(见上一条) - Code Runner 默认用
g++ -o /tmp/cpp /tmp/cpp.cpp && /tmp/cpp,临时路径在不同系统行为不一,不适合调试——它适合快速验证语法,不适合查逻辑错误
真正需要单步、看变量、设断点的时候,F5 + tasks.json + launch.json 这一套绕不开。省略构建步骤,等于没装发动机就踩油门。
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











