2012-03-23 108 views
-1

我在调试时使用Visual Studio中的断点。看看下面的代码:.NET调试在停止后继续

Try 
    Dim Test1 As String 
    Throw New Exception 
Catch ex As Exception 
    Msg("test") 
End Try 

我注意到,如果我把第2行(其中Test1的声明)断点,然后停止程序(通过按下停止按钮),一个消息框将出现说测试。如果程序停止,消息框如何显示?这是一个非常简单的例子。当代码更复杂时,通常会发生这种情况。

回答

0

尽管你希望能够,你一般不能因为编译器将其添加到生成的方法的IL的当地人,并成为该方法的堆栈准备工作的一部分断点变量的声明。实际上,当方法运行时,变量已经被声明。

因此异常提升实际上是第一件事。

由于@sixlettervariables然后说,如果你分配该变量,那么它是不同的,因为这是用户代码是方法体的一部分。

0

你应该看到它以不同的方式,而不是持平线的基础上。

调试器允许您以包括冻结程序的执行指令。 但是因为你只是声明一个变量,所以目前没有办法冻结这个程序。

事实上,变量已经被声明之前,你“打”这一行。

下一个地方,它就能冻结程序的下一条指令(而不是声明)。你的下一个指令是Msg("test")

+0

我已经停止在第3行的程序(而不是2号线)和它再次发生。 – w0051977 2012-03-23 15:22:39