VS Code C++调试需同时满足三条件:安装本地编译器(如MinGW/MSVC)、正确配置c_cpp_properties.json/tasks.json/launch.json三文件、确保编译带调试符号(-g或/Zi)且路径完全匹配。

VS Code 装完 C++ 插件还是没法按 F5 调试
根本原因是插件本身不带编译器和调试器,c_cpp_properties.json、tasks.json、launch.json 这三个文件缺一不可,且路径/编译器配置必须严格匹配本地环境。
- Windows 上没装
MinGW-w64或Visual Studio Build Tools,光装插件只会看到Unable to start debugging. Launch program 'xxx' does not exist. -
c_cpp_properties.json里的"compilerPath"必须指向真实存在的g++.exe或cl.exe,不能只写"g++"(系统 PATH 查找不可靠) - Mac/Linux 用户容易漏掉
tasks.json中的"group": "build",导致按Ctrl+Shift+B无反应,F5 调试时找不到可执行文件
task.json 编译命令总报错:undefined reference 或 no input files
典型是 args 参数顺序或缺失关键项。VS Code 的 tasks.json 不会自动推导源文件,必须显式指定或用 ${file} 占位符。
- 错误写法:
"args": ["-o", "a.out"]—— 没告诉 g++ 编译哪个文件,会报no input files - 正确写法:
"args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"] - 链接失败(
undefined reference)大概率是用了-c(只编译不链接),但launch.json却尝试运行目标文件;去掉-c,或确保tasks.json输出的是可执行文件(不是.o) - Windows 下 MinGW 用户注意:
cl.exe和g++.exe的参数不兼容,别混用/EHsc和-std=c++17
launch.json 配置后断点不命中、显示 “unverified breakpoint”
断点失效几乎全是调试符号问题:编译没加 -g(GCC/Clang)或 /Zi(MSVC),或者生成的可执行文件路径和 launch.json 里 "program" 不一致。
- 检查
tasks.json的args是否包含-g(Linux/macOS)或/Zi(Windows + MSVC) -
launch.json中"program"必须和tasks.json输出的可执行文件**完全一致**,包括扩展名(.exe在 Windows 上不能省) - 修改代码后没重新编译就按 F5?VS Code 不会自动构建,得先
Ctrl+Shift+B或勾选launch.json的"preLaunchTask"字段 - 使用 WSL 时,
"type": "cppdbg"必须配"miDebuggerPath"指向 WSL 内的gdb,不能用 Windows 主机上的路径
CMake 项目在 VS Code 里怎么跳过 tasks.json 直接调试
用 CMake Tools 插件替代手写配置,但前提是本地已安装 CMake 且项目有 CMakeLists.txt。它会自动生成构建目录和 launch.json 入口,但默认不开启调试符号。
立即学习“C++免费学习笔记(深入)”;
- 首次打开项目后,按
Ctrl+Shift+P→ 输入CMake: Configure,选编译器(如MinGW Makefiles) - 确保
CMakeLists.txt包含set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")或使用set(CMAKE_BUILD_TYPE Debug) - 按
Ctrl+Shift+P→CMake: Build,完成后按F5,选择CMake Debug环境即可 - 如果仍断点失效,检查
build/compile_commands.json里是否含-g;没有的话,在CMakeLists.txt开头加set(CMAKE_EXPORT_COMPILE_COMMANDS ON)











