我试图在使用WinDBG的应用程序中抛出异常的底部,在堆栈的开头有这样的:
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命令或者无论如何我可以找出这个线程是如何启动的?
答案 0 :(得分:1)
!CLRStack将显示托管堆栈。但是,由于这是一个ThreadPoolWaitOrTimerCallback,因此很可能不是您拥有的代码。您应该调查排队回调的位置。
答案 1 :(得分:0)
从你调用堆栈我假设你可能没有看到引发异常的线程。您是否尝试过发布:~*e !CLRStack
或!Threads
?这应该为您提供哪些线程保存异常上下文的信息。然后,您可以使用~<thread_id>s
命令切换到该线程并进一步调查。