Crash-dump - auflösen von nicht verwaltetem code zum Absturz in einem .NET-Anwendung mit WinDbg
Ich versuche zu entdecken, die WinDbg-tool für die Analyse von crash-dump haben wir auf unserem Produktionsserver.
Wenn ich !analyze -v
ich bekommen:
0:000> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
GetPageUrlData failed, server returned HTTP status 404
URL requested: http://watson.microsoft.com/StageOne/w3wp_exe/7_0_6002_18005/49e03238/unknown/0_0_0_0/bbbbbbb4/80000003/00000000.htm?Retriage=1
FAULTING_IP:
+14935130
00000000`00000000 ?? ???
EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000000000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0
FAULTING_THREAD: 00000000000029b0
DEFAULT_BUCKET_ID: WRONG_SYMBOLS
PROCESS_NAME: w3wp.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
MANAGED_STACK: !dumpstack -EE
OS Thread Id: 0x29b0 (0)
Child-SP RetAddr Call Site
PRIMARY_PROBLEM_CLASS: WRONG_SYMBOLS
BUGCHECK_STR: APPLICATION_FAULT_WRONG_SYMBOLS
LAST_CONTROL_TRANSFER: from 000000007749c0b0 to 00000000775e6d5a
STACK_TEXT:
00000000`0012f6c8 00000000`7749c0b0 : 00000000`00000000 000007fe`faf07e6b 00000000`00000000 000007fe`f9c015f0 : ntdll!ZwWaitForSingleObject+0xa
00000000`0012f6d0 000007fe`f9c03e74 : 00000000`00000158 00000000`ffb35de0 00000000`00000000 00000000`00000158 : kernel32!WaitForSingleObjectEx+0x9c
00000000`0012f790 00000000`ffb3235a : 00000000`fffffffe 00000000`00000001 00000000`007e6400 00000000`0000008c : w3wphost!AppHostInitialize+0x280
00000000`0012f7f0 00000000`ffb33b71 : 00000000`00000000 00000000`ffb33ce5 00000000`00000000 00000000`00000000 : w3wp!wmain+0x466
00000000`0012f980 00000000`7748be3d : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : w3wp!PerfStopProvider+0x199
00000000`0012f9c0 00000000`775c6a51 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd
00000000`0012f9f0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x1d
STACK_COMMAND: ~0s; .ecxr ; kb
FOLLOWUP_IP:
w3wphost!AppHostInitialize+280
000007fe`f9c03e74 f6052998000003 test byte ptr [w3wphost!g_dwDebugFlags (000007fe`f9c0d6a4)],3
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: w3wphost!AppHostInitialize+280
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: w3wphost
IMAGE_NAME: w3wphost.dll
DEBUG_FLR_IMAGE_TIMESTAMP: 49e0420f
FAILURE_BUCKET_ID: WRONG_SYMBOLS_80000003_w3wphost.dll!AppHostInitialize
BUCKET_ID: X64_APPLICATION_FAULT_WRONG_SYMBOLS_w3wphost!AppHostInitialize+280
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/w3wp_exe/7_0_6002_18005/49e03238/unknown/0_0_0_0/bbbbbbb4/80000003/00000000.htm?Retriage=1
Followup: MachineOwner
Ich habe wirklich eine harte Zeit, herauszufinden, was was ist. Von dem was ich verstehe, sind hier der interessante Teil:
EXCEPTION_CODE and STACK_TEXT.
Ich bin wirklich neu auf WinDbg, und es ist das erste mal, dass ich mich mit diesem tool. Ich habe gekämpft, mit meiner Google-Suche, so dass ich denke, ich bin nicht auf der Suche für die richtige Sache.
Was ich tun möchte ist:
- Verstehen das Ausgabe-format der stack_text
- Versuchen, um zu sehen, die input-Parameter der einzelnen Funktionen
Ist, dass der richtige Weg zur Lösung dieses Problems?
Ich habe das gleiche Ergebnis !analysieren -v. Bitte sagen Sie mir, was war das problem?
InformationsquelleAutor Jean-Francois | 2011-01-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es einige gute tutorials im web verfügbar und auch in der WinDbg-Hilfe-Datei (.chm). Ein guter Ort wäre WinDBG tutorial - Einführung oder Tess' blog, , Wenn es gebrochen ist, es zu beheben, sollten Sie.
In Ihrem Fall, Schritt 1 wäre zu zeigen WinDbg, um die richtigen Symbole. Es ist klar, aus der obigen Ausgabe, dass Ihr sympath ist entweder falsch oder nicht auf eine PDB-Dateien. Tun Sie Folgendes im debugger:
Diesem Punkt wird der debugger mit der öffentlichen Symbolserver von Microsoft für OS-Komponenten; es werden cache-PDB-Dateien, um Ihre
c:\symbols
Ordner. Hinzufügen ein anderes symbol-Pfad (zum Beispiel, der Ordner mit der Anwendung von PDB-Dateien), können Sie entweder ein '; ' - getrennte Liste von Pfaden oder nutzen Sie einfach das.sympath+
Befehl zum hinzufügen neuer Pfade Stückwerk.Sobald Sie Ihr symbol Pfad, laufen
!analyze -v
erneut, oder führen Sie die Schritte im tutorial oben, um zu sehen, ob Sie bessere Ergebnisse erzielen.".symfix" - Befehl würde das symbol Pfad zu MS-symbol-server. Versuchen "!sym-laut" zu bekommen-symbol look-up-Fehler.
Sorry für die Verzögerung bei der Reaktion. Es waren zwei hinweisen auf falsche Symbole. Zuerst !analysieren, zeigte die offensichtliche "WRONG_SYMBOLS" Nachricht als das primäre problem. Zweite der offset für die Funktionen in w3wp sind ein bisschen zu groß (0x280 für eins, 0 x 199 für die anderen). Als Naveen gesagt !sym-laut, gefolgt von einem .neu laden können Sie die ausführliche info, wo es zu finden ist der PDB-Dateien und warum ist es das nicht.
InformationsquelleAutor nithins
Den stack-trace sollte lesbar sein, wenn Sie die richtigen Symbole. Sie könnten versuchen, so etwas wie:
.symfix
!clrstack -p
dump stack mit den Parametern.InformationsquelleAutor Thomas Bratt