Edit and Contiue功能
在调试程序的时候,经常会遇到这样的情况:在调试一大段代码时,遇到了一个小的错误,比如参数的赋值错误了,这时候,往往希望能够马上将这些小的错误改正过来后,能够继续调试跟踪下去,而不用结束整个调试过程去修改。在Visual Studio 2003中,我们必须停止当前的调试,修改错误的地方,再重新编译,这样十分不方便。在Visual Studio 2005 中,提供了一个新的功能叫"edit and continue",意思是说,当你在调试时,遇到小的错误需要马上修改后,可以进行编辑修改,然后继续往下调试,不需要结束整个调试的过程,当你修改后,调试器在后台进行了自动的编译,并且会执行新修改的代码,十分方便。下面举个例子进行说明。
打开Visual Studio 2005,使用c#建立一个winform窗体应用程序,在窗体中添加一个label标签,一个文本框,一个按钮,如下图所示,我们要实现的功能是,在文本框输入一些信息后,点按钮,会弹出一个消息框,显示的是刚才输入的信息。
498)this.style.width=498;" border=0>
假如我们编写的代码如下所示,出现了一个小错误,把textbox1.text的内容当作字符串的一部分了,所以显示不出用户输入的信息。
private void button1_Click(object sender, EventArgs e) { //Show welcome message MessageBox.Show("Welcome textbox1.Text to Edit and Continue."); } |
498)this.style.width=498;" border=0>
现在,如果我们在调试时遇到了这个错误,则可以使用edit and continue功能来进行改正。
首先,按F7切换到代码视图,在MessageBox.Show这一行设置断点,之后按F5运行程序,当在文本框输入字符串时,由于设置了中断,光标停留在messagebox.show这行上,这时,我们可以修改代码,修改为:
private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Welcome " + textbox1.Text +" to Edit and Continue."); } |
修改完后,继续按F5运行,这时候,则会显示正确的结果了,如下图,而不需要使用以往的"stop debugging"的功能先停止调试再修改程序。
498)this.style.width=498;" border=0>
可视化调试器(Debugging Visualizers)
在调试的时候,我们遇到的一个很麻烦的问题,就是有的时候很难看到某些参数的值。比如当你设置了一个断点去监测一个dataset,并且想看dataset里的每个datatable的数据,这在Visual Studio 2003中,是十分麻烦的,必须在auto/locals的监视窗口中,一层层地展开去看其值。在Visual Studio 2005中,为解决这个问题,新增加了叫"debugging visualizers"(可视化调试器)的功能,该功能可以在调试状态时,很容易方便地以各类形式,比如文本,html,xml等方式查看各种参数。
在各类的监视窗口中,比如在autos,locals,watch和quickwatch 中都可以调用可视化调试器,方法是在某个需要监视的参数旁边,点击那个放大镜图标,就可以在打开的可视化调试器中看到该参数的详细情况,如下图所示:
498)this.style.width=498;" border=0>
利用可视化调试器,就可以很方便地查看比如dataset类型的数据,如下图所示:
498)this.style.width=498;" border=0>
Data Tips
在Visual Studio 2005中,在调试方面,还新增了"data tips(数据提示)"的功能。当在调试程序期间,只需要将光标移到代码中某个需要监视的参数上,系统就会自动显示与该参数相关联的一些很有用的信息,比如相关的属性,以及当前该参数的值。在Visual Studio 2003中,也有该功能,但提供的信息比现在的2005少很多。
我们依然以上面"edit and continue"使用的例子来说明。我们将断点设在MessageBox.Show这一行,F5运行程序,当在文本框输入文字并按确定按钮后,程序自动中断,这时,将光标移到textbox1.text这个位置,系统就会调用data tips功能,如下图所示显示出与textbox文本框控件相关的一些属性以及这些属性此时对应的值。
498)this.style.width=498;" border=0>
1
2
下一页>>