2009-10-20 41 views
6

我想分析一個小型故障轉儲並需要符號文件以獲取有關故障的更多詳細信息。即時通訊目前只是看到: 「!034eff74 0086eee9 00000000 0089d58d 034eff94 app_integrator ZNK14ACE_Data_Block4baseEv + 0x6從」從msys/mingw中提取調試信息gcc使用rebase.exe構建dll?

是否可以提取調試從MSYS/MinGW的gcc構建DLL信息到WinDbg的可讀格式?如果沒有,是否有其他方式獲得更詳細的信息,比如以某種方式加載MAP文件?

該dll及其包含的所有.o文件都使用-g標誌構建。

回答

5

Windbg無法應付在mingw安裝時由-g生成的調試信息。然而,據稱它可以應付COFF符號。

如果您的DLL的源文件足夠小,您可能可以獲取COFF調試信息來構建(-gcoff而不是-g)。

因此,Windbg可以(據稱)處理COFF符號,GCC可以生成它們。所以從那裏應該很容易,對吧?我試圖用Visual Studio 2008生成的加載gcc編譯的DLL的Win32可執行文件完成此操作。不幸的是,使用-gcoff編譯不起作用。 Mingw的gcc不會爲超過64k行代碼的項目生成COFF符號。我使用的DLL是特別大於64K的代碼行。很遺憾,我不得不承認,我放棄了可靠的OutputDebugString。否則,我可以提供更完整的說明。我並不喜歡研究讓gcc爲大型源文件做COFF符號的選項,或者選擇編寫調試擴展來將DWARF或STABS數據解析到windbg內部符號表中。

我解決了這個問題,順便說一下!

可以找到更多的建議in this forum post at windbg.info

+0

完美,我會試試看。 – Kristofer 2011-09-05 08:28:33

+0

我很想知道它是否有效,或者如果沒有,您還可以設法做些什麼! – Pete 2011-10-24 10:24:34

+0

在相關說明中,探查器Very Sleepy對使用-gstabs創建的調試符號非常有用 – 2014-03-22 20:09:39