解决在VSCode中调试C/C++时gdb报错193的一种情况
想在VSCode上开发C语言程序,按照官方教程配置环境后遇到了一个问题,在搜索引擎上找到了一点思路,经过几次尝试终于成功解决。防止后人继续踩坑,在此记录下来。
问题确认
首先要确定你的环境和我的大致相同,我在安装完Mingw64后已经将mingw64/bin加入环境变量Path:
软件 | 版本 |
---|---|
Windows 10 | 1809 |
Mingw64 | 8.1.0 x86_64 |
VSCode | 1.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也能解决问题。