VS Code配置MinGW64编译backward库

VS Code用MinGW64编译C++代码安装MSYS2软件并配置backward调试追踪库和测试引用库代码的完整具体步骤。


1. 安装 MSYS2 和 MinGW64

  1. 下载 MSYS2

    • 访问 MSYS2 官网
    • 下载安装包(如 msys2-x86_64-latest.exe
    • 按默认路径安装(例如 C:\msys64
  2. 更新包数据库

    • 打开 MSYS2 UCRT64 终端(开始菜单搜索)

    • 执行更新命令:

      bash 复制代码
      pacman -Syu
    • 关闭窗口(如有提示),重新打开终端,再次运行:

      bash 复制代码
      pacman -Su
  3. 安装 MinGW64 工具链

    bash 复制代码
    pacman -S --needed mingw-w64-ucrt-x86_64-toolchain

2. 安装 backward-cpp 库

方法1:通过 MSYS2 安装(推荐)
bash 复制代码
pacman -S mingw-w64-ucrt-x86_64-backward-cpp
方法2:手动安装
  1. 下载源码:

    bash 复制代码
    git clone https://github.com/bombela/backward-cpp.git
  2. 复制头文件到 MinGW64:

    bash 复制代码
    cp backward-cpp/backward.hpp /mingw64/include/

3. 配置 VS Code

(1) 添加 MinGW64 到系统 PATH
  • 打开系统环境变量设置

  • Path 中添加:

    复制代码
    C:\msys64\ucrt64\bin
(2) 安装 VS Code 扩展
  • C/C++ (Microsoft)
  • Code Runner (可选)
(3) 配置 C/C++ 环境
  1. 创建 test.cpp 文件(示例代码见下一步)。
  2. Ctrl+Shift+P > C/C++: Edit Configurations (UI)
    • 编译器路径 : C:\msys64\ucrt64\bin\g++.exe

    • IntelliSense 模式 : gcc-x64

    • 包含路径 (手动安装 backward 时需添加):

      复制代码
      C:\msys64\ucrt64\include

4. 测试 backward 库

(1) 创建测试代码 (test.cpp)
cpp 复制代码
#include <iostream>
#include "backward.hpp" // 确保路径正确

void crash_function() {
    int* ptr = nullptr;
    *ptr = 42; // 触发段错误
}

int main() {
    backward::SignalHandling sh; // 启用信号捕获
    std::cout << "Triggering crash...\n";
    crash_function();
    return 0;
}
(2) 配置编译任务 (.vscode/tasks.json)
json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "-o", "test.exe",
                "test.cpp",
                "-lbfd",         // Backward 依赖库
                "-limagehlp",    // Windows 特有
                "-lpsapi",       // Windows 特有
                "-lz"            // 压缩支持
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
(3) 配置调试 (.vscode/launch.json)
json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug with GDB",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/test.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\msys64\\ucrt64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "启用反汇编风格",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

5. 编译和调试

  1. 编译代码

    • Ctrl+Shift+B 执行编译任务(生成 test.exe)。
  2. 运行调试

    • 打开 test.cpp
    • F5 启动调试
    • 程序崩溃时,backward 会在终端输出完整的堆栈跟踪信息。

故障排除

  • 未找到 backward.hpp

    检查包含路径,确保头文件在 /ucrt64/include 中。

  • 链接错误(如 undefined reference to bfd_*

    tasks.json 中确认已添加 -lbfd -limagehlp -lpsapi -lz

  • 调试时无堆栈信息

    确保编译时使用 -g 选项生成调试符号。

  • MSYS2 环境问题

    所有操作需在 UCRT64 终端或正确配置 PATH 的 VS Code 中进行。

相关推荐
会员源码网17 小时前
使用`mysql_*`废弃函数(PHP7+完全移除,导致代码无法运行)
后端·算法
木心月转码ing18 小时前
Hot100-Day10-T438T438找到字符串中所有字母异位词
算法
HelloReader18 小时前
Wi-Fi CSI 感知技术用无线信号“看见“室内的人
算法
颜酱21 小时前
二叉树分解问题思路解题模式
javascript·后端·算法
qianpeng8971 天前
水声匹配场定位原理及实验
算法
董董灿是个攻城狮1 天前
AI视觉连载8:传统 CV 之边缘检测
算法
blasit2 天前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
AI软著研究员2 天前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish2 天前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱2 天前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法