相信大家都是用过linux吧,使用vscode来调试程序更是家常便饭,众所周知,我们在利用vscode来进行调试代码的时候使用的工具是gdb,通过在vscode的launch.json中配置gdb和被调试的工程项目和要被调试的测试用例。vscode官方提供给我们的launch.json的模板在点击 “Add Configuration... ”按钮之后会自动生成:
// launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"preLaunchTask": "Build",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "c:/MinGW/bin/gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}]
}
其中字段“name”代表要给调试的时候起的名称;
“preLaunchTask”:代表在launch之前运行的任务名,这个名字一定要跟tasks.json中的任务名字大小写一致;
“type”:代表被调试的文件类型,默认设置为:cppdbg;
”request“:默认设置为:launch;
”program“:代表你要调试的工程项目,即需要运行的是当前打开文件的目录中,名字和当前文件相同,但是扩展名为exe的程序【当然是在windows操作系统上的情况】;
"args": 代表要被调试的测试用例的路径;
”stopAtEntry“: 设置为true的时候则会打开控制台后停滞,暂时不执行程序,也就是程序开始运行时的首地址;
”cwd“: 代表要被调试的测试用例的路径;
好了,介绍好了在vscode中的配置文件,我们来看一下如果在点击vscode “Run->Start Debugging” 的时候出现了异常的情况该怎么解决,以下是我在linux的机器上要开始调试程序的时候所弹出来的对话框:
之所以出现这个原因是因为vscode在配置文件中提供了支持windows操作系统的文件,该文件的名称为:OpenDebugAD7.exe.config,如果我们在windows操作系统下使用vscode的gdb调试则没有问题,但是在linux上进行调试就会出现上面的报错了,因为linux操作系统并不知道这个文件是代表了什么意思。解决方法就是将这个文件删除掉:
在自己的目录下:
rm /home/serven/.vscode/extensions/msvscode.cpptools-<version>/debugAdapters/bin/OpenDebugAD7.exe.config
删除后就可以进行正常的gdb调试了。