So finden Sie die Ursache von Absturz in Windbg?

Ich habe eine Anwendung, die stürzt ab, auf eine bestimmte Aktion durch den Benutzer. Zum Beispiel, wenn ich auf eine bestimmte Schaltfläche in der Anwendung, es stürzt ab.

So, ich angehängt windbg zu diesem Antrag und dann führte die gleiche operation, die auslösen würde, die den Absturz.

Wenn der Absturz passiert, der debugger zeigt die folgende Ausgabe:

0:001> g
ModLoad: 04530000 04565000   C:\Windows\SysWOW64\ws2_32.DLL
ModLoad: 72430000 7246c000   C:\Windows\SysWOW64\mswsock.dll
ModLoad: 723e0000 723e5000   C:\Windows\SysWOW64\wshtcpip.dll
(10b0.1e9c): C++ EH exception - code e06d7363 (first chance)
(10b0.1c94): C++ EH exception - code e06d7363 (first chance)
(10b0.1c94): C++ EH exception - code e06d7363 (!!! second chance !!!)
eax=00000000 ebx=040ee7e0 ecx=00000003 edx=00000000 esi=005c7630 edi=00400000
eip=770715de esp=040ee7cc ebp=040eece4 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!ZwRaiseException+0x12:
770715de 83c404          add     esp,4

Möchte ich analysieren, die Ausgabe oben, um herauszufinden, die Ursache dieser Ausnahme. Vielleicht konnte ich ein Bericht an die Entwickler dieser Anwendung dann? Aber für mein Verständnis würde ich gerne begreifen dieser Ausgabe.

Kann ich sehen, dass die exe lädt die 3 dlls, ws2_32.dll, mswsock.dll und wshtcpip.dll wenn ich auf die Schaltfläche an, wahrscheinlich, weil es verwendet Funktionen exportiert aus diesen geladenen Modulen.

Gibt es 2 erste-chance-Ausnahmen mit der exception code: e06d7363 das ist die Ausnahme-code nach Visual C++ - Compiler.

Ich bin nicht sicher, warum die zweite chance-Ausnahme kommt und was genau passiert da?

Unten ist die Ansicht des call-stack an dieser Stelle im debugger,

0:001> k
ChildEBP RetAddr  
03a4e7cc 7706014d ntdll!ZwRaiseException+0x12
03a4e7cc 00000000 ntdll!KiUserExceptionDispatcher+0x29

Drückte ich g wieder in den debugger, damit die Anwendung die Ausnahme behandelt und das ist die Ausgabe im debugger,

0:001> g
WARNING: Continuing a non-continuable exception
(114c.390): Unknown exception - code 00000000 (first chance)
(114c.390): Unknown exception - code 00000000 (!!! second chance !!!)
eax=00000000 ebx=03a4e318 ecx=83ee0000 edx=026ce8b8 esi=007073e0 edi=00400000
eip=770715de esp=03a4e304 ebp=03a4ece4 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!ZwRaiseException+0x12:
770715de 83c404          add     esp,4

So, sieht aus wie eine nicht behandelte Ausnahme von der Anwendung?


Hier sind die details. Ich habe die kv-Befehl zum anzeigen der Parameter auf dem Stapel. Hoffe, diese information hilft Ihnen, zu beheben.

0:001> g
ModLoad: 040a0000 040d5000   C:\Windows\SysWOW64\ws2_32.DLL
ModLoad: 72430000 7246c000   C:\Windows\SysWOW64\mswsock.dll
ModLoad: 723e0000 723e5000   C:\Windows\SysWOW64\wshtcpip.dll
(193c.1810): C++ EH exception - code e06d7363 (first chance)
(193c.1810): C++ EH exception - code e06d7363 (!!! second chance !!!)
eax=00000000 ebx=02c1e7e0 ecx=00000003 edx=00000000 esi=007073e0 edi=00400000
eip=770715de esp=02c1e7cc ebp=02c1ece4 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!ZwRaiseException+0x12:
770715de 83c404          add     esp,4
0:001> kv
ChildEBP RetAddr  Args to Child              
02c1e7cc 7706014d 02c1e7e0 02c1e830 00000000 ntdll!ZwRaiseException+0x12 (FPO: [3,0,0])
02c1e7cc 00000000 02c1e7e0 02c1e830 00000000 ntdll!KiUserExceptionDispatcher+0x29     (FPO: [2,0,0]) (CONTEXT @ 0000000c)
0:001> g
WARNING: Continuing a non-continuable exception
(193c.1810): Unknown exception - code 00000000 (first chance)
(193c.1810): Unknown exception - code 00000000 (!!! second chance !!!)
eax=00000000 ebx=02c1e318 ecx=e04b0000 edx=0096e8b8 esi=007073e0 edi=00400000
eip=770715de esp=02c1e304 ebp=02c1ece4 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!ZwRaiseException+0x12:
770715de 83c404          add     esp,4
Eine gängige Praxis ist, verwenden Sie Debug Diag, ADPlus, oder andere dump-capture-Befehle/ - utilities zu erfassen crash-dumps und analysieren dann in WinDbg (beginnend mit analyze-v).

InformationsquelleAutor Neon Flash | 2012-01-21

Schreibe einen Kommentar