我正在使用调试器(vs2008)。Visual Studio 2008/2010 SP1,如何跳出一个catch?
一旦我进入catch语句,我想知道是否有任何方法将执行光标设置回try的开头。
只是拖动它似乎没有工作,是否有一些设置我需要改变?
例子:
try
{
//Want the cursor back here
}
catch
{
//some code, cursor is here...
}
我正在使用调试器(vs2008)。Visual Studio 2008/2010 SP1,如何跳出一个catch?
一旦我进入catch语句,我想知道是否有任何方法将执行光标设置回try的开头。
只是拖动它似乎没有工作,是否有一些设置我需要改变?
例子:
try
{
//Want the cursor back here
}
catch
{
//some code, cursor is here...
}
显然,这取决于你所使用的.NET运行时的味道。在我第一次写这篇文章的时候,我尝试了它的时候效果很好,但是我正在使用我的工作电脑,安装了32位操作系统。
我使用此代码段进行测试:
try
{
throw new Exception();
}
catch
{
Console.WriteLine("Error"); // Breakpoint here
}
你不能设置在try
行的光标。它将在紧随其后的行之后(块声明的开始)。
将光标拖到该行或try
行对我编译.NET程序for x86时正常工作。如果您正在运行32位操作系统,它也可以工作。但是,当你在64位环境和编译任何CPU或,您将收到以下错误消息:
由于这是仅用于调试的目的,可能的解决方法是为x86编译,因此将使用32位运行时。转至Build菜单并选择配置管理器。在平台,请选择x86或新...如果它目前不在列表中。在后一种情况下,你会得到一个新的对话框。挑选的选项,如下图所示,然后单击OK:
我不这么认为。当在catch块内时,我们不能跳回来尝试块 – 2011-04-05 04:59:58
@Nam Gi VU:我已经做了更多的调查并更新了响应。这也许可以解释为什么当你遇到问题时,它为我工作。 – Thorarin 2011-04-10 08:08:42
如果我右击并执行“设置下一条语句”然后我得到了下面的错误对话框:
无法设置下一条语句到这个位置。解除调用堆栈的尝试失败。
平仓是不可能在下列情况:
- 调试经刚刚在实时调试开始。
- 放松正在进行中。
- System.StackOverflowException或System.Threading.ThreadAbortException异常已被引发。
通过消除不能移动光标(与设置下一条语句相同)的原因必须是#2。
“放松”究竟是什么。请向我解释。谢谢! – 2011-04-05 06:28:45
@Nam看到[这个问题](http://stackoverflow.com/questions/2005606/net-what-is-an-unwind),这实际上是由我的问题,因为这个答案! :-) – Justin 2011-04-05 06:54:52
可爱。我将把你的问题作为其余的模板,如果你没有问及即时调试和不能跳回异常的原因 – 2011-04-06 09:34:51
我和你有同样的问题 – 2011-04-05 06:23:14
我已经更新了我的答案。显然它与32位和64位环境有关。 – Thorarin 2011-04-10 08:28:13