使用 rebase.exe 从 msys/mingw gcc 构建的 dll 中提取调试信息?

Posted

技术标签:

【中文标题】使用 rebase.exe 从 msys/mingw gcc 构建的 dll 中提取调试信息?【英文标题】:Extract debugging information from a msys/mingw gcc built dll using rebase.exe? 【发布时间】:2009-10-20 08:09:55 【问题描述】:

我正在尝试分析一个小型故障转储,并且需要符号文件以获取有关该故障的更多详细信息。我目前只是看到: "034eff74 0086eee9 00000000 0089d58d 034eff94 app_integrator!ZNK14ACE_Data_Block4baseEv+0x6"

是否可以从 msys/mingw gcc 构建的 dll 中将调试信息提取为 windbg 可读格式?如果没有,是否有任何其他方法可以获取更详细的信息,例如以某种方式加载 MAP 文件?

dll 及其包含的所有 .o 文件都是使用 -g 标志构建的。

【问题讨论】:

【参考方案1】:

Windbg 无法处理在 mingw 安装中由 -g 生成的调试信息。但是,据称它可以处理 COFF 符号。

如果您的 DLL 的源文件足够小,您可能可以获得 COFF 调试信息来构建(-gcoff 而不是 -g)。

因此,Windbg 可以(据称)处理 COFF 符号,而 GCC 可以生成它们。所以从那里应该很容易,对吧?我试图用 Visual Studio 2008 生成的 Win32 可执行文件来执行此操作,该可执行文件正在加载 gcc 编译的 DLL。对我来说不幸的是,使用 -gcoff 编译不起作用。 Mingw 的 gcc 不会为超过 64k 行代码的项目生成 COFF 符号。我使用的 DLL 明显大于 64K 代码行。遗憾的是,我不得不承认,我放弃了,转而使用可信赖的 OutputDebugString。否则,我将能够提供更完整的说明。我不想研究让 gcc 为较大的源文件执行 COFF 符号的选项,或者编写调试扩展以将 DWARF 或 STABS 数据解析到 windbg 的内部符号表的替代选项。

顺便说一句,我解决了这个问题!

更多建议可以在in this forum post at windbg.info找到。

【讨论】:

我很想知道它是否有效,或者如果无效,您还做了什么! 在相关说明中,分析器 Very Sleepy 非常适合使用 -gstabs 创建的调试符号

以上是关于使用 rebase.exe 从 msys/mingw gcc 构建的 dll 中提取调试信息?的主要内容,如果未能解决你的问题,请参考以下文章

使用存储过程从视图中检索或过滤数据是不是比使用存储过程从表中获取或过滤数据更快?

如何使用 graphql 从 Firebase 使用 Flutter 从 Cloud Firestore 获取数据?

使用 RTSP 从 Opencv 处理后,视频从 PC 流式传输到 Android

从哪里 clickonce 从 regedit 获取 DisplayName 中使用的值?

如何使用自适应卡操作从自适应卡获取用户响应。使用 Microsoft Bot Framework 从 MS Teams 频道提交操作?

无法从使用推送从苹果开发者帐户创建的 aps_production 创建 p12