2009-10-20 12 views
6

Ich versuche, einen Mini-Crash-Dump zu analysieren und brauche Symboldateien, um mehr Details über den Absturz zu erhalten. Im derzeit nur sehen: "! 034eff74 0086eee9 00000000 0089d58d 034eff94 app_integrator ZNK14ACE_Data_Block4baseEv + 0x6"Extrahieren von Debugging-Informationen aus einer msys/mingw gcc erstellten DLL mit rebase.exe?

Ist es möglich, aus einer Debug-Informationen zu extrahieren msys/mingw gcc gebaut DLL in ein windbg lesbares Format? Wenn nicht, gibt es eine andere Möglichkeit, detailliertere Informationen zu erhalten, wie zum Beispiel das Laden einer MAP-Datei?

Die DLL und alle darin enthaltenen .o-Dateien werden mit dem Flag -g erstellt.

Antwort

5

Windbg kann die Debugging-Informationen, die von -g in einer Mingw-Installation generiert werden, nicht verarbeiten. Es kann jedoch mit COFF-Symbolen zurechtkommen.

Wenn die Quelldateien für Ihre DLL klein genug sind, können Sie wahrscheinlich COFF-Debuginformationen zum Erstellen erhalten (-gcoff statt -g).

So kann Windbg (angeblich) COFF-Symbole behandeln und GCC kann sie erzeugen. Von daher sollte es einfach sein, oder? Ich habe versucht, genau dies mit einer Win32-Programmdatei zu tun, die von Visual Studio 2008 generiert wurde und eine gcc-kompilierte DLL geladen hat. Leider funktionierte das Kompilieren mit -gcoff nicht. Mingws gcc erzeugt keine COFF-Symbole für Projekte mit mehr als 64.000 Codezeilen. Die DLL, die ich benutzte, war deutlich größer als 64K Codezeilen. Leider muss ich zugeben, dass ich aufgegeben habe und auf den treuen OutputDebugString zurückgegriffen habe. Sonst wäre ich in der Lage, umfassendere Anweisungen zu geben. Ich hatte keine Lust, die Möglichkeit zu untersuchen, gcc COFF-Symbole für größere Quelldateien zu erstellen, oder die alternative Option, eine Debugging-Erweiterung zu schreiben, um DWARF- oder STABS-Daten in windbgs interne Symboltabellen zu parsen.

Ich habe das Problem übrigens behoben!

Weitere Vorschläge finden Sie in this forum post at windbg.info.

+0

Perfekt, ich werde es versuchen. – Kristofer

+0

Ich würde gerne wissen, ob es funktioniert hat, oder was du sonst noch geschafft hast, wenn nicht! – Pete

+0

Der Profiler Very Sleepy funktioniert gut mit den Debug-Symbolen, die mit -gstabs erstellt wurden –