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

相关推荐
飞Link12 小时前
什么是 PX4?一文了解 PX4 在空地协同中的作用
算法·无人机
进化中的刀盾兽12 小时前
从零实现 C++ Json-Rpc(十):把消息交给真实连接——MuduoConnection 与 ConnectionFactory
c++·rpc
一去不复返的通信er18 小时前
力扣-图论-岛屿数量
算法·leetcode·图论
2501_9445215918 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理19 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
青瓦梦滋19 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
wangchunyu11420 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
程序 代码狂人21 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
HDU-Dade1 天前
【校招笔试真题】简要介绍 Self-Attention 的前沿算法
人工智能·算法
meiying88381 天前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化