美文网首页
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