2009-09-16 6 views
0

J'ai repéré mon interblocage à ce thread ne pompant plus les messages, mais comment puis-je aller un peu plus loin et comprendre ce que le fil est en train de faire? J'utilise windbg et des promenades au hasard à l'aide! Ne m'a pas donné anuthing jusqu'à présentComment puis-je savoir ce qu'un appel UnsafeNativeMethods.DispatchMessageA fait en utilisant windbg?

merci beaucoup

Oskar

0:057> !clrstack 
OS Thread Id: 0x17f8 (57) 
ESP  EIP  
1393f1ac 2070a64a [NDirectMethodFrameStandalone: 1393f1ac] System.Windows.Forms.UnsafeNativeMethods.DispatchMessageA(MSG ByRef) 
1393f1bc 04851c91 System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32, Int32, Int32) 
1393f258 04851276 System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner(Int32, System.Windows.Forms.ApplicationContext) 
1393f2a0 048507e3 System.Windows.Forms.Application+ThreadContext.RunMessageLoop(Int32, System.Windows.Forms.ApplicationContext) 
1393f2d0 0485062f System.Windows.Forms.Application.Run() 

Répondre

1
!dumpstack 

le tour est joué, belle stacktrace détaillée dans le dll non géré

+0

+1 que je déteste voir les réponses acceptées sans up votes :) –

0

kn100 vous donnera la pile native, mais il semble comme il appelle DispatchMessage, ce qui signifie qu'il est probablement bloqué dans le gestionnaire de fenêtre de la fenêtre cible (par exemple un événement "OnSize" ou quelque chose dans votre code)

Crack ouvrir la structure MSG afin que vous puissiez e la fenêtre et le message qu'il essaie d'envoyer, puis trouvez le gestionnaire d'événements correspondant dans votre code.