修改并继续执行,恢复异常
在某些情况下,当在Visual Studio 调试器进入代码后,用户可以修改变量的值,用户甚至可以更改逻辑声明。这就是Edit and Continue功能。
Edit and continue将会在调试出现错误时起作用。没有必要停止并重新启动测试,并为避免异常进行更多的步骤,更加合理的做法是,在异常发生之前,可以立即“放松”对异常执行,然后改变违例的变量或者语句,然后在不抛出异常的状态下继续执行调试会话。
尽管可以广泛的情况下使用Edit and continue功能,但是不支持Edit and continue功能的特定条件很难明确指出,因为这些条件与基于编程语言、程序栈的当前状态、调试器在不破坏进程下改变状态的能力有关。确定是否支持Edit and continue的最好方法就是尝试,如果不支持的话,调试器会立即通知用户。
例四:
在本示例中,运行调试器到出现异常,回退到异常,更改方法的逻辑,然后改变变量的值以便于继续执行方法。
1) 调用MainPage构造器的Example方法。
编辑MainPage()构造函数,并将methodTrack = String.Empty; 这一行替换为Example4();。
2) 运行到异常。
在Debug菜单中选择Start DeBuggging(快捷键:F5)启动测试对话框,再次按下F5重新开始执行。调试器在Example方法的异常处暂停测试,并且弹出异常对话框如下图11-13所示。
图11-13 弹出异常效果图
3) 改变程序语法。
很明显,错误出现在if条件中:当x只有为0时,应该改变x的值,而不是当x不为0时发生改变。选择Break对这个方法的逻辑语法进行修改,但是当用户尝试修改这行时,会弹出另一个对话框如图11-14所示。
选择Edit,然后将if(x!=0)改变为if(x==0),调试器就会改变源文件的逻辑语法。
4)改变变量值。
检查数据提示框或者Locals 窗口中的x值,它仍然是0。如果尝试执行曾经产生异常的声明,会再次抛出异常。另一种方式是直接改变x的值,在Locals窗口中,双击包含x行的列,将x的值从0改为1。如下图11-15所示。
图11-15 修改变量
现在按下F11进入之前抛出异常的声明语句中,现在会发现执行这一行将不会发生错误,然后再次使用F11离开。
5)停止调试。
在Debug菜单中,选择Stop DeBugging(快捷键:Shfit+F5)。这样就会结束测试对话。