VSCode调试需外部调试器(如GDB)和正确配置的launch.json协同工作。launch.json必须置于项目根目录.vscode/下,且program、miDebuggerPath等字段路径须精确;MinGW-w64用户还需添加setupCommands禁用优化并启用美化打印,编译时须用-g -O0,同时c_cpp_properties.json中compilerPath须与实际编译器路径完全一致。

调试环境不是VSCode自带的,得靠外部调试器和配置文件协同
VSCode本身不带调试能力,它只是个“调度员”。真正干活的是GDB(Linux/macOS)或MinGW-w64附带的gdb.exe(Windows),而launch.json就是你给这个调度员写的指令单。很多人按F5弹出空白launch.json就卡住,本质是没意识到:VSCode不会自动猜你要调哪个可执行文件、用哪个调试器、从哪开始运行。
必须手动创建并填写launch.json,且路径不能错
这个文件必须放在项目根目录下的.vscode/launch.json位置,不是随便建个JSON就管用。常见错误包括:
- 把
launch.json放在桌面或用户目录下,VSCode根本读不到 - 文件名写成
Launch.json或launch.JSON,大小写或后缀不对就失效 - 没配
program字段,比如写成"program": "./a.out"但实际编译出来是hello.exe(Windows下默认后缀是.exe) -
miDebuggerPath指向错误——例如MinGW-w64用户必须填D:\mingw64\bin\gdb.exe,而不是只写gdb
Windows下用MinGW-w64调试时,setupCommands不加会断点失效
这是2026年仍高频出现的坑:即使launch.json其他都对,断点也进不去,变量显示<optimized out>。根本原因是GDB默认开启优化,而MinGW-w64编译时没关优化。解决方法是在launch.json的configurations里加这段:
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Disable optimization for debugging",
"text": "set debug-file-directory """,
"ignoreFailures": true
}
]
同时确保编译命令用了-g -O0(tasks.json里控制),否则GDB读不到符号信息。
调试前务必确认c_cpp_properties.json里的compilerPath指向真实编译器
这个文件不直接影响调试启动,但影响断点解析和变量类型识别。如果compilerPath写成"C:\mingw64\bin\gcc.exe"但实际路径是C:\tools\mingw64\bin\gcc.exe,VSCode会报Unable to start debugging. Cannot find the debug adapter executable.这类误导性错误。检查方式很简单:在VSCode终端里直接运行gcc --version和gdb --version,两个命令都成功,再核对c_cpp_properties.json里的路径是否完全一致(注意斜杠方向和盘符大小写)。
.exe后缀,都可能让F5变成摆设。


















