8

在回答这个问题时,我注意到在处理异常时尝试移动“光标”时出现以下对话框:

无法将下一条语句设置为此位置。展开调用堆栈的尝试失败。

在以下情况下无法展开:

  1. 调试是通过即时调试开始的。
  2. 放松正在进行中
  3. 已引发 System.StackOverflowException 或 System.Threading.ThreadAbortException 异常。

究竟什么是放松

4

4 回答 4

19

是我!

不,在这种情况下,它通常是指通过堆栈步进(“向后”/“向上”)的过程,删除连续的帧,直到您回到所需的级别。典型的堆栈(当然)在它们的结构中是非常线性的,帧是首尾相连的,所以实际上并没有太多的文字展开,但这就是它的名字。

这个维基百科页面有更多细节。

于 2010-01-05T11:19:34.443 回答
2

展开只是向后移动堆栈。

于 2010-01-05T11:20:21.797 回答
1

CLR 在这里“展开”堆栈,以便找到具有可以处理异常的 catch 块的方法,即如果当前方法不处理异常,则返回到调用它的方法以查看它是否会. 重复此操作,直到找到处理异常的方法或达到应用程序级别的错误处理。

于 2010-01-05T11:27:19.003 回答
0

这意味着有一个错误的线程,或者可能是因为堆栈已满并且没有创建堆栈帧,CLR 在这种情况下选择 UNWIND 当前上下文。

于 2010-01-05T11:23:17.103 回答