Comment faire pour trouver la cause du Crash de l'Application dans Windbg?
J'ai une application qui se bloque sur une des mesures spécifiques prises par l'utilisateur. Par exemple, lorsque je clique sur un bouton spécifique dans l'application, il se bloque.
Donc, j'ai attaché windbg pour cette application, puis effectué la même opération qui allait déclencher le crash.
Quand l'accident est arrivé, le débogueur affiche la sortie suivante:
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
Je veux analyser le au-dessus de la sortie de trouver la cause racine de cette exception. Peut-être, je pourrais le signaler au développeur de cette application? Mais pour ma compréhension, je voudrais saisir cette sortie.
Je peux voir que le fichier exe charge les 3 dll, ws2_32.dll, mswsock.dll et wshtcpip.dll quand je clique sur ce bouton, sans doute parce qu'il utilise des fonctions exportées à partir de ces modules chargés.
Il y a 2 exceptions de première chance avec le code d'exception: e06d7363 qui est le code d'exception selon le Compilateur Visual C++.
Je ne suis pas sûr pourquoi, la deuxième chance exception et ce qui est exactement là?
Ci-dessous est le point de vue de la pile d'appel à ce point dans le débogueur,
0:001> k
ChildEBP RetAddr
03a4e7cc 7706014d ntdll!ZwRaiseException+0x12
03a4e7cc 00000000 ntdll!KiUserExceptionDispatcher+0x29
J'ai appuyé sur g nouveau dans le débogueur pour permettre à l'application de gérer l'exception, et c'est la sortie du débogueur,
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
Donc, ressemble à une exception non gérée par l'application?
Voici les détails. J'ai utilisé la commande kv afficher les paramètres sur la pile. Espérons que cette information vous aide à résoudre les problèmes.
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
OriginalL'auteur Neon Flash | 2012-01-21
Vous devez vous connecter pour publier un commentaire.
Un couple de commentaires
regardez la trace de la pile. Cependant la trace de la pile est incomplète et doit avoir
été créé avec le kv commande pour afficher les paramètres sur la pile.
D'analyser cela nous avons besoin de kv de sortie lorsque l'exception est soulevée et puis vidage de l'enregistrement d'exception. Veuillez fournir les informations et puis je peux vous montrer comment sauvegarder l'enregistrement d'exception.
Basé sur la publication des résultats de l'exécution: ".exr 02c1e830"
OriginalL'auteur steve