我正在尝试分析迷你崩溃转储并需要符号文件以获取有关崩溃的更多详细信息。我目前只是看到: “034eff74 0086eee9 00000000 0089d58d 034eff94 app_integrator!ZNK14ACE_Data_Block4baseEv + 0x6”
是否可以从msys / mingw gcc构建的dll中提取调试信息到windbg可读格式?如果没有,是否有其他方法可以获得更详细的信息,比如以某种方式加载MAP文件?
dll及其包含的所有.o文件都是使用-g标志构建的。
答案 0 :(得分:5)
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 do COFF符号的选项,或者编写调试扩展以将DWARF或STABS数据解析为windbg的内部符号表的替代选项。
我顺便解决了这个问题!
可以找到进一步的建议in this forum post at windbg.info。