Post-mortem debugging mit VC++6 und drwatson crashdump



  • Hallo!
    Ich habe das Problem, dass eine VC++6-MFC-Anwendung beim Kunden crasht.
    Bei mir nicht reproduzierbar.
    Nun hat der Kunde mir ein drwatson crashdump geschickt.
    (Anwendung wurde Debug-compiliert, enthält also alle Symbole).
    Wie kann ich das (mit/ohne VC6++) zum debuggen nutzen.
    Ich wär vor allem an einem Stack-trace (per Thread) interessiert.
    Wer hat Erfahrung damit?



  • 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.



  • VC6 kannst Du nicht verwnden.
    Du kannst ab VS2002-2008 verwenden oder die kostenlosen "Debugging Tools For Windows" und hier im speziellen WinDbg (mein Favorit).



  • Hallo,
    ich habe nun WinDbg installiert.
    Funktioniert auch, nur findet er die Symbole nicht.
    Symbolverzeichnis hab ich angegeben (das gleiche wie .exe-Verzeichnis).
    Sind die Symbole denn nun im De bug-comilierten .exe mit drin oder fehlt eine andere Datei?
    Wenn ja, welche?
    Oder was könnte sonsts das Problem sein.

    hier mal der output beim öffnen des crashdumps:

    Microsoft (R) Windows Debugger Version 6.9.0003.113 X86
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    Loading Dump File [XXX\user.dmp]
    User Mini Dump File: Only registers, stack and portions of memory are available
    
    Comment: 'Dr. Watson generated MiniDump'
    Symbol search path is: D:\Documents and Settings\lruoff\My Documents\Aviso-Support\Debug
    Executable search path is: D:\Documents and Settings\lruoff\My Documents\Aviso-Support\Debug
    Windows XP Version 2600 (Service Pack 2) UP Free x86 compatible
    Product: WinNt, suite: SingleUserTS
    Debug session time: Mon Jun  2 09:20:33.000 2008 (GMT+2)
    System Uptime: not available
    Process Uptime: 0 days 0:02:05.000
    .................................................
    This dump file has an exception of interest stored in it.
    The stored exception information can be accessed via .ecxr.
    (8e4.c8c): Access violation - code c0000005 (first/second chance not available)
    eax=00000000 ebx=00d87f40 ecx=00000000 edx=00000000 esi=fd1713ac edi=011afc68
    eip=0042f410 esp=011afc18 ebp=011afc68 iopl=0         nv up ei pl nz na pe nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000206
    *** WARNING: Unable to verify checksum for AvisoD.exe
    *** ERROR: Module load completed but symbols could not be loaded for AvisoD.exe
    AvisoD+0x2f410:
    0042f410 8b4034          mov     eax,dword ptr [eax+34h] ds:0023:00000034=????????
    

    Gibt es sonst irgendne Möglichkeit, herauszufinden in welcher Funktion es gecrasht hat?
    +Stacktrace?

    Danke,
    Scrontch



  • Die PDB-Datei passt halt nicht zur EXE! bzw. nicht zu der EXE die den Crash erzeugt hat!

    Wenn Du Dir 1000000%ig sicher bist, dass sie trotzdem passt, so kannst Du
    die Symbole trotzdem laden, mit:

    .symopt+ 0x40
    .reload
    !analyze -v
    


  • Hallo Jochen,

    Danke für deine bisherige Hilfe.
    Darf ich sie nochmal in Anspruch nehmen:
    Ich bin jetzt soweit dass ich ein crashdump zur richtigen debug-exe habe und auch den Stack trace sehe.
    Allerdings sehe ich nicht die Werte der lokalen Variablen in der Funktion.
    In der View "Locals" sagt WinDbg <No information found error>.
    Sollte ich die sehen? Oder deutet das daraufhin dass das Objekt nicht mehr existiert?



  • Du musst den "richtigen" Stack-Frame markieren...

    kn
    .frame 2
    

    Siehe auch:
    http://blogs.msdn.com/ntdebugging/archive/2008/06/06/windbg-tip-kn-frame-dv-and-dt-it-s-so-easy.aspx



  • Danke Jochen,
    bringt in meinem Fall leider nichts.
    😞


Anmelden zum Antworten