美文网首页
vscode 在windows下使用gcc+mingw调试 c/

vscode 在windows下使用gcc+mingw调试 c/

作者: smallest_one | 来源:发表于2023-03-24 17:14 被阅读0次

    这里将介绍配置Visual Studio Code以使用GCC C ++编译器(g ++)和GDB调试器来创建和调试在Windows上运行的程序。

    1. 安装VS Code的C/C++扩展。可以通过在扩展视图中搜索“c++”来安装C/C++扩展(Ctrl+Shift+X)。
    image1.png
    1. 通过MSYS2获取最新版本的Mingw-w64,该软件提供了GCC,Mingw-w64和其他有用的C++工具和库的最新本地版本。可以从MSYS2页面下载最新的安装程序,或使用此链接到安装程序

    2. 按照MSYS2网站上的Installation说明安装Mingw-w64。

    3. 安装Mingw-w64工具链(pacman -S --needed base-devel mingw-w64-x86_64-toolchain)。在MSYS2终端中运行pacman命令。接受默认值以安装toolchain组中的所有成员。

    4. 使用以下步骤将Mingw-w64的bin文件夹的路径添加到Windows的PATH环境变量中:例如路径:C:\\msys64\\mingw64\\bin

    检查您的MinGW安装

    要检查您的Mingw-w64工具是否正确安装并可用,请打开一个msys2命令的终端提示符并键入:

    gcc --version
    g++ --version
    gdb --version
    
    
    1. 如果您没有看到预期的输出或g++gdb不是已识别的命令,请确保您的PATH条目与编译器所在的Mingw-w64二进制位置匹配。如果编译器不存在于该PATH条目中,请确保您遵循了MSYS2网站上的说明安装Mingw-w64。
    2. 如果gcc有正确的输出但gdb没有,则需要从Mingw-w64工具集中安装您缺少的软件包。
      • 缺少mingw-w64-gdb软件包是尝试编译时出现“miDebuggerPath的值无效”的消息的原因之一,如果您的PATH正确,则需要安装软件包。

    添加 hello world 示例程序

    现在粘贴以下源代码:

    #include <iostream>
    #include <vector>
    #include <string>
    
    using namespace std;
    
    int main() {
        vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
    
        for (const string& word : msg) {
            cout << word << " ";
        }
        cout << endl;
    }
    
    

    运行 helloworld.cpp

    1. 打开 helloworld.cpp,使其成为活动文件。

    2. 单击编辑器右上角的三角形按钮。


      image2.png
    1. 从系统检测到的编译器列表中选择C/C++:g++.exe build and debug active file
    image3.png

    只有在第一次运行 helloworld.cpp 时才会要求您选择编译器。此编译器将作为“默认”编译器设置在 tasks.json 文件中。

    1. 构建成功后,程序的输出将出现在集成的终端中。
      image4.png

    第一次运行程序时,C++ 扩展将创建 tasks.json,可以在项目的 .vscode 文件夹中找到它。tasks.json 存储构建配置。

    新 tasks.json 文件应类似于以下 JSON:

    {
      "tasks": [
        {
          "type": "cppbuild",
          "label": "C/C++: g++.exe build active file",
          "command": "C:\\\\\\\\msys64\\\\\\\\mingw64\\\\\\\\bin\\\\\\\\g++.exe",
          "args": [
            "-fdiagnostics-color=always",
            "-g",
            "${file}",
            "-o",
            "${fileDirname}\\\\\\\\${fileBasenameNoExtension}.exe"
          ],
          "options": {
            "cwd": "${fileDirname}"
          },
          "problemMatcher": ["$gcc"],
          "group": {
            "kind": "build",
            "isDefault": true
          },
          "detail": "Task generated by Debugger."
        }
      ],
      "version": "2.0.0"
    }
    
    

    Debug调试

    调试跟vscode使用其他调试工具没什么差别,

    • 如设置断点的行,再运行Debug。
    image5.png

    使用launch.json自定义调试

    使用播放按钮或F5进行调试时,C ++扩展会即时创建动态调试配置。

    有些情况下,你希望自定义调试配置,例如指定在运行时传递给程序的参数。可以在launch.json文件中定义自定义调试配置。

    要创建launch.json,请从以下设置中选择“添加调试配置”。

    image6.png

    然后,将看到各种预定义的调试配置的下拉列表。选择C/C++: g++.exe build and debug active file

    image7.png

    VS Code将创建一个名为launch.json的文件,其外观类似于以下内容:

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "C/C++: g++.exe build and debug active file",
          "type": "cppdbg",
          "request": "launch",
          "program": "${fileDirname}\\\\\\\\${fileBasenameNoExtension}.exe",
          "args": [],
          "stopAtEntry": false,
          "cwd": "${fileDirname}",
          "environment": [],
          "externalConsole": false,
          "MIMode": "gdb",
          "miDebuggerPath": "C:\\\\\\\\msys64\\\\\\\\mingw64\\\\\\\\bin\\\\\\\\gdb.exe",
          "setupCommands": [
            {
              "description": "Enable pretty-printing for gdb",
              "text": "-enable-pretty-printing",
              "ignoreFailures": true
            }
          ],
          "preLaunchTask": "C/C++: g++.exe build active file"
        }
      ]
    }
    
    

    在上面的 JSON 中,program指定您想要调试的程序。在此,它设置为活动文件夹(${fileDirname})和具有.exe扩展名的活动文件名称(${fileBasenameNoExtension}.exe),如果helloworld.cpp是活动文件,则为helloworld.exeargs属性是要在运行时传递给程序的参数数组。

    默认情况下,C++扩展不会向您的源代码添加任何断点,stopAtEntry的值为false

    stopAtEntry的值更改为true,以使调试器在开始调试时停在main方法上。

    从现在开始,播放按钮和F5将从您的launch.json文件中读取,以便在进行调试时启动程序。

    相关文章

      网友评论

          本文标题:vscode 在windows下使用gcc+mingw调试 c/

          本文链接:https://www.haomeiwen.com/subject/wjfgrdtx.html