如何使用Microsoft Visual C++调试器调试MinGW EXE
How can I debug a MinGW EXE with the Microsoft Visual C++ debugger?
如何使用Microsoft Visual C++调试器调试MinGW EXE?
您可以将Visual C++调试器附加到系统上运行的任何进程(从Visual C++菜单)。但为了能够逐步完成源代码,Visual C++必须加载符号文件(如果我没记错的话,是.pdb),我认为GCC不会生成这些文件。
存在许多Visual studio扩展,例如:WinGDB、VisualGDB,您可以在web上找到它。它允许您作为常规Visual Studio项目进行调试。这些项目不是免费的,但它有30天的全功能试用期。它有一些限制,但已经足够好了。
问题:
GCC编译器(即MinGW的GCC)生成调试信息-g";旗帜调试信息嵌入到生成的可执行文件中。另一方面,Windows的编译器使用了一个特殊的";。pdb";用于存储调试信息的格式。例如,Microsoft Visual Studio的调试器不仅需要可执行文件(.exe),还需要其调试信息(.pdb)可用。
解决方案:
有一个小程序可以从用gcc编译的可执行文件中提取.pdb文件。它被称为cv2pdb,可在https://github.com/rainers/cv2pdb.
-
下载cv2pdbhttps://github.com/rainers/cv2pdb
-
将cv2pdb.exe放在路径中的某个位置,也许是一个自定义的bin文件夹,这样就可以通过命令行访问它。
-
像往常一样使用MinGW的gcc编译器编译文件-g";标志,以便包含调试信息。
-
只需在可执行文件上运行cv2pdb.exe。
cv2pdb out.exe
这将在同一目录中生成一个out.pdb文件。
-
(如果您安装了Microsoft Visual Studio)直接在Microsoft Visual Studio 中打开可执行文件
devenv-out.exe
注意:此命令只需在Microsoft Visual Studio中打开可执行文件,而无需为其创建项目。实际上,您可以使用要生成可执行文件的任何文本编辑器+生成系统,然后将Visual Studio仅用作独立的调试器。
- 当回溯以零开始时,如何调试崩溃
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在linux上调试巨大的C++项目
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 如何将C++中的库和头与MinGW一起使用
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 正在VS调试器中监视映射条目
- 使用调试/崩溃报告将应用程序部署到客户端
- VC++本机单元测试,找不到调试符号
- 如何在C++生成器中禁用"使用调试.dcus"
- 使用 Windows 10 和 MINGW 编译器在 VS Code 上使用 gdb 调试器进行调试时出错
- 在Windows 10上使用MINGW构建的Clang的调试构建无法运行
- 预编译HEADERS在使用Qt Creator/qmake/MinGw的调试构建中不起作用
- Qt 5.1.0 on Windows 使用 minGW 4.8,需要很长时间才能调试
- 在Windows7 64位上使用MinGW的Eclipse CDT-调试配置崩溃[可能已经解决,但仍然很奇怪]
- C++ Eclipse Mars+MinGW 中的调试器"gdb.exe --version"错误
- Eclipse调试MinGW:执行MI命令失败
- 调试MinGW上的内存损坏
- 如何使用Microsoft Visual C++调试器调试MinGW EXE