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 中进行。

相关推荐
catchadmin20 分钟前
PHP True Async RFC 被拒——原生异步离 PHP 还有多远?
开发语言·php
J***793921 分钟前
PHP在电商中的Magento
开发语言·php
恒者走天下38 分钟前
秋招落定,拿到满意的offer,怎么提高自己实际的开发能力,更好的融入团队
c++
做怪小疯子43 分钟前
LeetCode 热题 100——矩阵——旋转图像
算法·leetcode·矩阵
努力学习的小廉44 分钟前
我爱学算法之—— BFS之最短路径问题
算法·宽度优先
python零基础入门小白1 小时前
【万字长文】大模型应用开发:意图路由与查询重写设计模式(从入门到精通)
java·开发语言·设计模式·语言模型·架构·大模型应用开发·大模型学习
天若有情6731 小时前
【c++】手撸C++ Promise:从零实现通用异步回调组件,支持链式调用+异常安全
开发语言·前端·javascript·c++·promise
无心水1 小时前
【Python实战进阶】1、Python高手养成指南:四阶段突破法从入门到架构师
开发语言·python·django·matplotlib·gil·python实战进阶·python工程化实战进阶
高山上有一只小老虎1 小时前
构造A+B
java·算法
学困昇1 小时前
C++中的异常
android·java·c++