想在 VSCode 上开发 C 语言程序,按照官方教程配置环境后遇到了一个问题,在搜索引擎上找到了一点思路,经过几次尝试终于成功解决。防止后人继续踩坑,在此记录下来。

问题确认

首先要确定你的环境和我的大致相同,我在安装完 Mingw64 后已经将 mingw64/bin 加入环境变量 Path:

软件版本
Windows 101809
Mingw648.1.0 x86_64
VSCode1.3.1
C/C++ 扩展0.21.0

我的按照官方文档配置,当我在命令行运行 ./a.out 时能够正常运行,但是按 F5 Debug 时 gdb 报错如下:

ERROR: Unable to start debugging. Unexpected GDB output from command "-exec-run". Error creating process C:\works\leetcodec\a.out, (error 193).
The program 'C:\works\leetcodec\a.out' has exited with code 42 (0x0000002a).

解决方法

.vscode/tasks.json 中:

"command": "g++",

修改为:

"command": "g++.exe",

这样修改后,生成的不再是 a.out 而是 a.exe,gdb 不再报错。

问题原因

因为开启了 WSL,且在 VSCode 中设为了默认终端,所以默认的 g++ 命令调用的是 WSL 中的 g++,加上 .exe 才会调用 Mingw64 中的 g++。如果将终端切回 Powershell 或 CMD 也能解决问题。