Как мне определить, что такое небезопасные методы?Вызов DispatchMessageA выполняется с использованием windbg?

StackOverflow https://stackoverflow.com/questions/1434355

  •  07-07-2019
  •  | 
  •  

Вопрос

Я отследил свою тупиковую ситуацию, когда этот поток больше не перекачивает сообщения, но как мне сделать еще один шаг вперед и выяснить, что в данный момент делает поток?Я использую windbg и случайные блуждания, используя !do пока не дал мне ответа

большое спасибо

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()
Это было полезно?

Решение

!dumpstack 

делает свое дело, хорошая подробная трассировка стека в неуправляемую dll

Другие советы

кн100 предоставит вам собственный стек, но похоже, что он вызывает Отправленное сообщение, что означает , что он , вероятно , застрял в обработчике окна целевого окна (т.е.событие "OnSize" или что-то в вашем коде)

Взломайте структуру MSG, чтобы вы могли увидеть окно и сообщение, которое оно пытается отправить, затем найдите соответствующий обработчик событий в своем коде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top