注:如已经了解launch.json及task.json如何手动配置,不用继续看了!
目录
- 如果出现下面这种情况,可能是遇到了和我以前第一次配置vscode开发环境的时候出现的相似的问题!
点击运行和调试或F5选择编译环境后,debugger异常终止,终端卡住无输出,调试控制台报错—gdb: unknown target exception 0x4000001f at 0x40156e!
- 有多个调试环境,且运行调试时选择的是排在更为后面的调试环境
例如:调试环境如下,使用MinGW64的调试环境(选择第三个编译器,这地方让我有点疑惑,见下文!)。Strawberry\\c\\bin\\g++.exe这个编译器及其调试环境应该是我之前安装Qt的时候安装的。
运行和调试结果如上述:出现的问题!
原因可能如下:
似乎vscode默认配置的编译器都是排在第一的调试环境对应的编译器,就挺奇怪!
查看生成的默认task.json和launch.json文件发现,task.json中配置的编译器为"C:\\Strawberry\\c\\bin\\g++.exe",然而launch.json中配置的debugger是"D:\\devcpp\\Devcpp\\MinGW64\\bin\\gdb.exe"(我对此有点疑惑,我上面选择的不是调试环境后面的编译器不应该是"D:\\devcpp\\Devcpp\\MinGW64\\bin\\g++.exe"吗,但是为啥vscode给我自动配置的编译器却是"C:\\Strawberry\\c\\bin\\g++.exe"?)默认配置的这个编译器和我们选择的debugger应该是不匹配的。如下,虽然版本都是4.9.2,但是厂家不同,可能有一点差别吧,然后导致编译链接产生的exe文件和另一厂家的debugger不能匹配!
task.json
launch.json
- 手动配置task.json或者launch.json
如上例中:将task.json中的编译器C:\\Strawberry\\c\\bin\\g++.exe手动改为D:\\devcpp\\Devcpp\\MinGW64\\bin\\g++.exe,运行调试后正常输出!或将launch.json中的miDebuggerPath改为Strawberry文件夹下面对应的debugger。
当然也可以直接使用第一个调试环境,然后launch.json中的miDebuggerPath会自动配置为C:\\Strawberry\\c\\bin\\gdb.exe
- 更改环境变量
vscode中调试环境的顺序应该是和系统环境变量的顺序相对应的!
系统变量中的path,不懂如何更改请自行百度!
如果一定要使用MinGW64的编译和调试环境,又不想每次手动的配置task.json文件。调整环境变量的顺序可以更改默认生成的task.json中自动配置的编译器。
更改环境变量后重新加载服务或重启vscode,调试环境的顺序同样更改了。
然后选择MinGW64的调试环境,task.json中编译器会自动配置为MinGW64的编译器。调试程序正常执行,正常输出。