如何使用Microsoft Visual C++调试器调试MinGW EXE

How can I debug a MinGW EXE with the Microsoft Visual C++ debugger?

本文关键字:调试 MinGW EXE 调试器 C++ 何使用 Microsoft Visual      更新时间:2023-10-16

如何使用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仅用作独立的调试器。