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

Posted

技术标签:

【中文标题】如何使用 Microsoft Visual C++ 调试器调试 MinGW EXE?【英文标题】:How can I debug a MinGW EXE with the Microsoft Visual C++ debugger? 【发布时间】:2008-11-08 09:44:38 【问题描述】:

【问题讨论】:

【参考方案1】:

您可以将 Visual C++ 调试器附加到系统上运行的任何进程(从 Visual C++ 菜单)。但是为了能够单步执行您的源代码,Visual C++ 必须加载符号文件(如果我没记错的话是 .pdb),我认为 GCC 不会生成这些文件。

【讨论】:

【参考方案2】:

存在许多 Visual Studio 扩展,例如我们:WinGDB、VisualGDB,您可以在 Web 上找到它。它允许您作为常规 Visual Studio 项目进行调试。这些项目不是免费的,但它有 30 天的完整功能试用期。它有一些限制,但已经足够了。

【讨论】:

【参考方案3】:

问题:

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 用作独立调试器。

【讨论】:

以上是关于如何使用 Microsoft Visual C++ 调试器调试 MinGW EXE?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中使用 Microsoft Visual Studio 2012 查找语法错误?

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

Microsoft Visual Studio C++、OpenCV 动画

如何在 Microsoft Visual C++ Express 中运行 C++ 简单代码 [关闭]

我无法在 Windows 上安装 pyaudio?如何解决“错误:需要 Microsoft Visual C++ 14.0。”?

需要 Microsoft Visual C++ 14.0。使用“Microsoft Visual C++ 构建工具”获取它:http://landinghub.visualstudio.com/vis