环境:
minguw
vscode

在vscode中配置文件,用mingw中的gcc和gdb调试c++程序

  1. 首先在项目根目录下创建.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连接到的控制台程序,这里是gdb
miDebuggerPath: 调试程序路径,这里要使用\\转义

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐