2012-01-11 6 views
0

я пытаюсь докопаться до исключения брошенного в моем приложении с помощью WinDBG, в начале стеки есть это:WinDBG ESP и EIP

04a4f25c 746fc477 System.Threading._ThreadPoolWaitOrTimerCallback.PerformWaitOrTimerCallback(System.Object, Boolean) 
    PARAMETERS: 
    state = <no data> 
    timedOut = <no data> 
    LOCALS: 
    <no data> 
    <no data> 

04a4f3ec 74b91b5c [GCFrame: 04a4f3ec] 

Я могу видеть указатели ESP Stack (04a4f25c и 04a4f3ec) и указатели инструкций EIP (746fc477 и 74b91b5c), есть ли команда WinDBG или, во всяком случае, я могу узнать, как этот поток был запущен?

ответ

1

CLRStack покажет вам управляемый стек. Однако, поскольку это ThreadPoolWaitOrTimerCallback, скорее всего, он не будет в вашем коде. Вы должны исследовать, где вы ставите очередь обратных вызовов.

0

Из вашего стека вызовов я предполагаю, что вы, вероятно, не смотрите на поток, который забросил исключение. Вы пробовали выдавать: ~*e !CLRStack или !Threads? Это должно предоставить вам информацию, в которой поток содержит контекст исключения. Затем вы можете переключиться на эту тему с помощью команды ~<thread_id>s и продолжить исследование.

Смежные вопросы