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.