环境:
minguw
vscode
在vscode中配置文件,用mingw中的gcc和gdb调试c++程序
- 首先在项目根目录下创建.vscode文件夹
2. 新建一个task.json文件
建立一个shell任务,拼接命令完成.cpp文件编译,生成.exe文件
{
"version": "2.0.0",
"tasks": [
{
"label": "debug gdb", //任务标签,用于标识这个任务
"type": "shell", //任务类型 process表示作为进程进程,shell表示输入命令进行
"command": "g++",//要执行的命令,这里是使用g++编译程序
"args": [//命令的一些参数
"-g",//
"${file}",//当前文件名
"-o",//不进行编译优化
"${fileBasenameNoExtension}.exe"//当前不包括扩展名的文件名
],
//最后拼接起来的shell命令举例 g++ -g c:\Users\muzit\Desktop\lock\LR1.cpp -o LR1.exe
"problemMatcher": [
"$gcc"
]
}
]
}
label
: 任务标签,用于标识${fileBasenameNoExtension}
: 当前文件的除去拓展名之后的文件名
这个配置文件的作用就是,拼接出shell命令,然后帮你执行编译任务,模拟的命令如下
tasks.json在一些不需要编译的环境里是必要的,但是对于python不需要编译的语言不需要这个文件也可以调试
3. 新建一个launch.json文件
{
"version": "2.0.0",
"configurations": [
{
"name": "gdb调试", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${workspaceRoot}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
"environment": [],
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
// miDebugger的路径,注意这里要与自己的MinGw的路径对应
"preLaunchTask": "debug gdb", // 调试会话开始前执行的任务,与tasks.json定义的任务标签相同
}
]
}
这里的重点是:preLaunchTask
与tasks.json里面label相对应,因为每一次修改文件后都要重新编译,这个标签说明是在执行完debug gdb任务(重新编译)后再进行调试工作program
标签指定即将调试的exe程序,${workspaceRoot}/${fileBasenameNoExtension}.exe
拼接的文件路径cwd
标签指当前工作目录MIMode
:MIDebugEngine连接到的控制台程序,这里是gdbmiDebuggerPath
: 调试程序路径,这里要使用\\
转义