MinGW-Anwendung just-in-time debuggen



  • Hallo,
    ich kompiliere meine Anwendung unter Windows mit dem GCC 4.5.2 aus MinGW.
    Ich möchte die Anwendung bei einem Absturz debuggen.

    Ich habe GDB und DrMinGW ausprobiert...

    Wenn ich die Anwendung aus GDB heraus starte und die Funktion abort() als Breakpoint setze, bekomme ich einen perfekten Callstack. Zum testen löse ich eine Assertion aus. Allerdings läuft die Anwendung auf diese Art doch deutlich langsamer.

    Wenn ich die Anwendung einfach so starte und diese nach dem Absturz über die ProcessID in GDB lade, sieht der Callstack nicht mehr so gut aus. Da sind nur so Sachen wie "!ntdll...". Nichts was mir weiterhilft.

    Mit DrMinGW erhalte ich garkeine Informationen, wobei ich mir auch nicht sicher bin, ob es nur nicht behandelte Exceptions abfängt.

    Meine Frage ist jetzt, ob es überhaupt möglich ist an einen vernüftigen Callstack zu kommen, wenn Windows den Prozess bereits angehalten hat?



  • Keine Ahnung wie GDB das macht, aber MSVC bzw. WinDbg benötigen einfach nur die Symbol-Files (.pdb) damit es brauchbare Callstacks anzeigen kann. Wenn der Debugger die Symbol-Files findet, dann funktioniert auch alles wunderbar wenn man sich erst nachträglich auf den Prozess darufgehängt hat. Wenn er sie nicht findet, dann hat man keinen brauchbaren Callstack und keinerlei Verbindung zum Source-Code mehr.

    Vielleicht ist das bei dir auch das Problem: der Debugger findet die Symbol-Files nicht.

    Wie das bei GDB funktioniert weiss ich leider nicht. Bei den MS Tools funktioniert es wenn...
    * Die .pdb Files genau dort liegen wo der Linker sie ursprünglich erzeugt hat oder
    * Die _NT_SYMBOL_PATH Umgebungsvariable entsprechend gesetzt ist
    * In den Einstellungen von Visual-Studio der Pfad eingetragen wurde wo die Symbol-Files gesucht werden sollen
    * (Vermutung:) Wenn die .pdb Files im selben Verzeichnis wie die .exe liegen



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten