Post-mortem Debugging auf Windows XP/Vista/7



  • Hallo,
    wie geht ihr vor um Programmabstürze auf Windows post-mortem zu debuggen?
    Ich hatte mal DrWatson auf XP benutzt, aber das scheint es auf Vista und Seven nicht mehr zu geben.
    Gibt es eine auf XP, Vista und Seven gleichermassen funktionierende Methode?
    D.h. was kann ich dem Endbenutzer sagen was er machen sollte, damit ich möglichst viele Informationen über den Crash bekomme? (Call-stack, Variablenwerte, ...)
    Die App wurde mit VS2008 (C++ nativ, MFC) entwickelt, und es wäre auch kein Problem die .pdb oder andere Files für Debugging-Zwecke mit auszuliefern.
    Was ist die einfachste Methode?



  • WinDbg : debugging tools for Windows : http://www.microsoft.com/whdc/devtools/debugging/default.mspx



  • * DebugDiag installieren
    * "Crash rule" definieren
    * Programm crasht
    * Dumpfile zu dir schicken
    * du machst Dumpfile im Studio/WinDbg auf und guckst es dir an

    Dazu brauchst du auf deiner Maschine die .pdb Files + Source Files der ausgelieferten Version.

    Wenn die .pdb + Source Files dort liegen wo das Programm ursprünglich compiliert wurde (selber Pfad) dann geht alles mehr oder weniger "automatisch".

    Was man anstellen muss damit Studio die .pdb + Source Files an einer anderen Stelle findet weiss ich nicht, hab' ich nie ausprobiert.

    p.S.: DebugDiag download:
    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en

    Das Ding installiert ein Service und läuft dann ohne zu nerven im Hintergrund, kann man im Prinzip immer mitlaufen haben.



  • hustbaer schrieb:

    Was man anstellen muss damit Studio die .pdb + Source Files an einer anderen Stelle findet weiss ich nicht, hab' ich nie ausprobiert.

    Gibt irgendwo in den Optionen einen Tab für zusätzliche pbds

    scrontch schrieb:

    Hallo,
    wie geht ihr vor um Programmabstürze auf Windows post-mortem zu debuggen?
    Ich hatte mal DrWatson auf XP benutzt, aber das scheint es auf Vista und Seven nicht mehr zu geben.
    Gibt es eine auf XP, Vista und Seven gleichermassen funktionierende Methode?
    D.h. was kann ich dem Endbenutzer sagen was er machen sollte, damit ich möglichst viele Informationen über den Crash bekomme? (Call-stack, Variablenwerte, ...)
    Die App wurde mit VS2008 (C++ nativ, MFC) entwickelt, und es wäre auch kein Problem die .pdb oder andere Files für Debugging-Zwecke mit auszuliefern.
    Was ist die einfachste Methode?

    Steps zu Reproduzieren anfordern. Der Zustand wenns crasht bringt nur selten was, außer du hast totalen Müll programmiert. Meistens stellst du aber beim Crash nur noch fest, dass irgendwas nicht mehr stimmt und kannst vlt. was einbauen, dass es nicht crasht, aber richtig funktionieren wirds immer noch nicht, weil das was nicht passt meistens auch noch wo anders gebraucht wird. Viel interessanter wäre es, wenn der User sagt, wie die Anwendung in so einen Zustand kommt.



  • Wenn ein Bug halbwegs zuverlässig zu reproduzieren ist, ist das natürlich die bessere Wahl.

    Wenn nicht würde ich es auf jeden Fall mit nem Crashdump versuchen. Die Chancen dafür ob ein Crashdump was bringt hängen natürlich sehr von der Art der Anwendung und der Art des Crashs ab. Ohne weitere Informationen würde ich auf jeden Fall sagen: ausprobieren, denn es ist nicht sehr viel Aufwand, und manchmal hat man eben auch Glück 🙂


Anmelden zum Antworten