VS Code用MinGW64编译C++代码安装MSYS2软件并配置backward调试追踪库和测试引用库代码的完整具体步骤。
1. 安装 MSYS2 和 MinGW64
-
下载 MSYS2
- 访问 MSYS2 官网
- 下载安装包(如
msys2-x86_64-latest.exe
) - 按默认路径安装(例如
C:\msys64
)
-
更新包数据库
-
打开 MSYS2 UCRT64 终端(开始菜单搜索)
-
执行更新命令:
bashpacman -Syu
-
关闭窗口(如有提示),重新打开终端,再次运行:
bashpacman -Su
-
-
安装 MinGW64 工具链
bashpacman -S --needed mingw-w64-ucrt-x86_64-toolchain
2. 安装 backward-cpp 库
方法1:通过 MSYS2 安装(推荐)
bash
pacman -S mingw-w64-ucrt-x86_64-backward-cpp
方法2:手动安装
-
下载源码:
bashgit clone https://github.com/bombela/backward-cpp.git
-
复制头文件到 MinGW64:
bashcp 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++ 环境
- 创建
test.cpp
文件(示例代码见下一步)。 - 按
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. 编译和调试
-
编译代码:
- 按
Ctrl+Shift+B
执行编译任务(生成test.exe
)。
- 按
-
运行调试:
- 打开
test.cpp
- 按
F5
启动调试 - 程序崩溃时,backward 会在终端输出完整的堆栈跟踪信息。
- 打开
故障排除
-
未找到 backward.hpp :
检查包含路径,确保头文件在
/ucrt64/include
中。 -
链接错误(如
undefined reference to bfd_*
) :在
tasks.json
中确认已添加-lbfd -limagehlp -lpsapi -lz
。 -
调试时无堆栈信息 :
确保编译时使用
-g
选项生成调试符号。 -
MSYS2 环境问题 :
所有操作需在 UCRT64 终端或正确配置 PATH 的 VS Code 中进行。