2012-01-11 70 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堆棧指針( 04a4f25c和04a4f3ec)和EIP指令指針(746fc477和74b91b5c),是否有WinDBG命令或無論如何,我可以找出這個線程是如何啓動的?

回答

1

!CLRStack將向您顯示託管堆棧。但是,由於這是一個ThreadPoolWaitOrTimerCallback,因此它可能不在您擁有的代碼中。你應該調查你排隊回調的位置。

0

從你調用堆棧我假設你可能沒有看到拋出異常的線程。您是否嘗試過發行:~*e !CLRStack!Threads?這應該給你提供哪些線程擁有異常上下文的信息。然後您可以使用~<thread_id>s命令切換到該線程並進一步調查。