想在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(Windows Subsystem for Linux),且在VSCode中设为了默认终端,所以默认的g++命令调用的是WSL中的g++,加上.exe才会调用Mingw64中的g++。如果将终端切回Powershell或CMD也能解决问题。