windbgを使用してUnsafeNativeMethods.DispatchMessageA呼び出しが何を行っているかを確認するにはどうすればよいですか?
質問
このスレッドへのデッドロックを追跡し、メッセージを送信しなくなりましたが、さらに一歩進めて、スレッドが現在何をしているのかを知るにはどうすればよいですか?私はwindbgを使用しており、!doを使用したランダムウォークはこれまでのところ私に不安を与えていません
多くの感謝
オスカー
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()
解決
!dumpstack
アンマネージdllに巧妙で詳細なスタックトレースを行います
他のヒント
kn100 はネイティブスタックを提供しますが、 DispatchMessage 。これは、おそらくターゲットウィンドウのウィンドウハンドラー(つまり、" OnSize"イベントまたはコード内の何か)に留まっていることを意味します
MSG構造体をクラックして、送信しようとしているウィンドウとメッセージを確認し、コード内で対応するイベントハンドラを見つけます。
所属していません StackOverflow