Visual Studio 2005中编译调试新功能
在日常的编程中,程序员经常离不开的工作之一,就是调试。当写好一段代码或程序后,在运行后总会出现这样那样的问题,比如各样的错误,程序员就必须进行调试,将这些错误排除。在最新出炉的Visual Studio 2005中,将提供十分强大而方便的调试功能,从而使程序员能节约时间,提高工作效率。本文中,将主要介绍Visual Studio 2005 在调试方面新增加的几个重要功能,并介绍它们的简单用法。
Edit and Contiue功能
在调试程序的时候,经常会遇到这样的情况:在调试一大段代码时,遇到了一个小的错误,比如参数的赋值错误了,这时候,往往希望能够马上将这些小的错误改正过来后,能够继续调试跟踪下去,而不用结束整个调试过程去修改。在Visual Studio 2003中,我们必须停止当前的调试,修改错误的地方,再重新编译,这样十分不方便。在Visual Studio 2005 中,提供了一个新的功能叫"edit and continue",意思是说,当你在调试时,遇到小的错误需要马上修改后,可以进行编辑修改,然后继续往下调试,不需要结束整个调试的过程,当你修改后,调试器在后台进行了自动的编译,并且会执行新修改的代码,十分方便。下面举个例子进行说明。
打开Visual Studio 2005,使用c#建立一个winform窗体应用程序,在窗体中添加一个label标签,一个文本框,一个按钮,如下图所示,我们要实现的功能是,在文本框输入一些信息后,点按钮,会弹出一个消息框,显示的是刚才输入的信息。
假如我们编写的代码如下所示,出现了一个小错误,把textbox1.text的内容当作字符串的一部分了,所以显示不出用户输入的信息。
private void button1_Click(object sender, EventArgs e) |
现在,如果我们在调试时遇到了这个错误,则可以使用edit and continue功能来进行改正。
首先,按F7切换到代码视图,在MessageBox.Show这一行设置断点,之后按F5运行程序,当在文本框输入字符串时,由于设置了中断,光标停留在messagebox.show这行上,这时,我们可以修改代码,修改为:
private void button1_Click(object sender, EventArgs e) |
修改完后,继续按F5运行,这时候,则会显示正确的结果了,如下图,而不需要使用以往的"stop debugging"的功能先停止调试再修改程序。
可视化调试器(Debugging Visualizers)
在调试的时候,我们遇到的一个很麻烦的问题,就是有的时候很难看到某些参数的值。比如当你设置了一个断点去监测一个dataset,并且想看dataset里的每个datatable的数据,这在Visual Studio 2003中,是十分麻烦的,必须在auto/locals的监视窗口中,一层层地展开去看其值。在Visual Studio 2005中,为解决这个问题,新增加了叫"debugging visualizers"(可视化调试器)的功能,该功能可以在调试状态时,很容易方便地以各类形式,比如文本,html,xml等方式查看各种参数。
在各类的监视窗口中,比如在autos,locals,watch和quickwatch 中都可以调用可视化调试器,方法是在某个需要监视的参数旁边,点击那个放大镜图标,就可以在打开的可视化调试器中看到该参数的详细情况,如下图所示:
利用可视化调试器,就可以很方便地查看比如dataset类型的数据,如下图所示:
Data Tips
在Visual Studio 2005中,在调试方面,还新增了"data tips(数据提示)"的功能。当在调试程序期间,只需要将光标移到代码中某个需要监视的参数上,系统就会自动显示与该参数相关联的一些很有用的信息,比如相关的属性,以及当前该参数的值。在Visual Studio 2003中,也有该功能,但提供的信息比现在的2005少很多。
我们依然以上面"edit and continue"使用的例子来说明。我们将断点设在MessageBox.Show这一行,F5运行程序,当在文本框输入文字并按确定按钮后,程序自动中断,这时,将光标移到textbox1.text这个位置,系统就会调用data tips功能,如下图所示显示出与textbox文本框控件相关的一些属性以及这些属性此时对应的值。
在data tip的功能中,还可以继续使用edit and continue的功能,只需要在需要的地方鼠标右键就可以弹出如下图的菜单,可以编辑该值。
Exception Assistant(异常助手)
在Visual Studio .net 2003中,当程序运行出现异常时,系统会显示一个异常信息对话框,询问是否停止程序执行或继续运行程序,但并没有提供给开发者更多的关于异常的信息。在Visual Studio .net 2005中,提供了 Exception Assistant(异常助手)的新功能,可以显示丰富的关于异常方面的信息,帮助开发者调试,如下图
在上图中,显示的是一个sqlException,是由于超时连接而造成的。在异常助手的窗口中,显示了关于该异常的详细信息,还可以将这些信息复制到剪贴版中,当选择view detail时,会弹出如下图所示的窗口,进一步显示关于该异常的详细信息
Just My Code Debugging
在调试代码中,我们经常会遇到这样的问题,有时我们引用了一些其他工具包或者类库(如Microsoft提供的Enterprise Library),而在调试时,我们其实是不需要跟踪调试这些代码的,因为它们都已经证明是正确的。在Visual Studio 2003中,处理这类问题我们的方法一般是使用F10跳过它们,但一旦工程庞大的话,这样做十分麻烦。在Visual Studio 2005中,新增加了Just My Code debugging(JMC)的新特性,可以让开发者自己定制哪些代码是需要调试,哪些代码是永远不需要调试的,这样可以节省大量的时间。
JMC功能由两方面来实现。首先,如果一个工程是以release方式进行编译构建的话(就是工程中,没有pdb文件),调试器会将其认为是非用户代码,那么在调试运行时,就根本不会进入该工程中进行调试。其次,可以使用System.Diagnostics命名空间里的DebuggerNonUserCodeAttribute属性,将其应用在希望不进行调试的代码段中。
下面举一个例子来说明。下面的代码段中,有两个静态方法UserCode()和NonUserCode(),其中,在NonUserCode()中,是应用了DebuggerNonUserCode的属性,这表明这段代码将在调试运行时,调试器不会进入其中。将断点设置在其中的第9行,运行程序,程序会在第一个UserCode()里中断,现在试着用F11继续单步跟踪,会发现系统在进入usercode()方法中运行后,并没有进入到NonUserCode()里运行。
using System; |
编辑时对象识别
在Visual Studio 2005中,新引入了"Object Identity While Debugging"的概念,也就是说,系统给在调试阶段的每个对象,都可以赋予一个别名,在调试时,直接引用该别名就可以了。
假设在调试的时候,需要跟踪比如dataset或者hashtable等对象,这些对象中包含了很多其他的子对象,如果想对这些数量众多的子对象进行跟踪的话,将十分麻烦。在Visual Studio 2005中,可以使用object identity(对象标识)的方法去标记每一个对象,
比如,在一个windows应用程序中,创建了一个dataset,并将其绑定到datagridview中去。如将sql server 的northwind数据库中的orders和orderdetail表中的数据读出填充到dataset里去,则在调试时,设置一个断点放在dataset里填充了数据之后的那行,这时,在监视窗口中,鼠标展开this.northwindData这个dataset,如下图所示,找到orders这个table,然后鼠标右键,会弹出一个菜单,选择其中的" Make Object ID".
这时,会将orders这个参数以1#的别名方式命名(见下图),并且在整个应用程序中,只要在dataset的生存期,都可以以1#的方式访问它。
下图的代码演示了如何在immediate监视窗口中,通过使用object 标识,查看某一个表中所有记录的方法。要注意的是,必须将其显式类型转换为DataApp.NorthwidDataSet.OrdersDataTable。通过使用object 标识的好处是,可以在调试阶段,不需要在描述某个参数时,再用冗余的命名方法表示了(比如可以用#1来代替this.NorthwidDataSet.Orders)
最近学习asp.net 2.0时新编译修改的一篇文章,原文发表在http://dev.yesky.com/msdn/359/2195359.shtml上,现转到这里。
在日常的编程中,程序员经常离不开的工作之一,就是调试。当写好一段代码或程序后,在运行后总会出现这样那样的问题,比如各样的错误,程序员就必须进行调试,将这些错误排除。在最新出炉的Visual Studio 2005中,将提供十分强大而方便的调试功能,从而使程序员能节约时间,提高工作效率。本文中,将主要介绍Visual Studio 2005 在调试方面新增加的几个重要功能,并介绍它们的简单用法。
Edit and Contiue功能
在调试程序的时候,经常会遇到这样的情况:在调试一大段代码时,遇到了一个小的错误,比如参数的赋值错误了,这时候,往往希望能够马上将这些小的错误改正过来后,能够继续调试跟踪下去,而不用结束整个调试过程去修改。在Visual Studio 2003中,我们必须停止当前的调试,修改错误的地方,再重新编译,这样十分不方便。在Visual Studio 2005 中,提供了一个新的功能叫"edit and continue",意思是说,当你在调试时,遇到小的错误需要马上修改后,可以进行编辑修改,然后继续往下调试,不需要结束整个调试的过程,当你修改后,调试器在后台进行了自动的编译,并且会执行新修改的代码,十分方便。下面举个例子进行说明。
打开Visual Studio 2005,使用c#建立一个winform窗体应用程序,在窗体中添加一个label标签,一个文本框,一个按钮,如下图所示,我们要实现的功能是,在文本框输入一些信息后,点按钮,会弹出一个消息框,显示的是刚才输入的信息。
假如我们编写的代码如下所示,出现了一个小错误,把textbox1.text的内容当作字符串的一部分了,所以显示不出用户输入的信息。
private void button1_Click(object sender, EventArgs e) |
现在,如果我们在调试时遇到了这个错误,则可以使用edit and continue功能来进行改正。
首先,按F7切换到代码视图,在MessageBox.Show这一行设置断点,之后按F5运行程序,当在文本框输入字符串时,由于设置了中断,光标停留在messagebox.show这行上,这时,我们可以修改代码,修改为:
private void button1_Click(object sender, EventArgs e) |
修改完后,继续按F5运行,这时候,则会显示正确的结果了,如下图,而不需要使用以往的"stop debugging"的功能先停止调试再修改程序。
可视化调试器(Debugging Visualizers)
在调试的时候,我们遇到的一个很麻烦的问题,就是有的时候很难看到某些参数的值。比如当你设置了一个断点去监测一个dataset,并且想看dataset里的每个datatable的数据,这在Visual Studio 2003中,是十分麻烦的,必须在auto/locals的监视窗口中,一层层地展开去看其值。在Visual Studio 2005中,为解决这个问题,新增加了叫"debugging visualizers"(可视化调试器)的功能,该功能可以在调试状态时,很容易方便地以各类形式,比如文本,html,xml等方式查看各种参数。
在各类的监视窗口中,比如在autos,locals,watch和quickwatch 中都可以调用可视化调试器,方法是在某个需要监视的参数旁边,点击那个放大镜图标,就可以在打开的可视化调试器中看到该参数的详细情况,如下图所示:
利用可视化调试器,就可以很方便地查看比如dataset类型的数据,如下图所示:
Data Tips
在Visual Studio 2005中,在调试方面,还新增了"data tips(数据提示)"的功能。当在调试程序期间,只需要将光标移到代码中某个需要监视的参数上,系统就会自动显示与该参数相关联的一些很有用的信息,比如相关的属性,以及当前该参数的值。在Visual Studio 2003中,也有该功能,但提供的信息比现在的2005少很多。
我们依然以上面"edit and continue"使用的例子来说明。我们将断点设在MessageBox.Show这一行,F5运行程序,当在文本框输入文字并按确定按钮后,程序自动中断,这时,将光标移到textbox1.text这个位置,系统就会调用data tips功能,如下图所示显示出与textbox文本框控件相关的一些属性以及这些属性此时对应的值。
在data tip的功能中,还可以继续使用edit and continue的功能,只需要在需要的地方鼠标右键就可以弹出如下图的菜单,可以编辑该值。
Exception Assistant(异常助手)
在Visual Studio .net 2003中,当程序运行出现异常时,系统会显示一个异常信息对话框,询问是否停止程序执行或继续运行程序,但并没有提供给开发者更多的关于异常的信息。在Visual Studio .net 2005中,提供了 Exception Assistant(异常助手)的新功能,可以显示丰富的关于异常方面的信息,帮助开发者调试,如下图
在上图中,显示的是一个sqlException,是由于超时连接而造成的。在异常助手的窗口中,显示了关于该异常的详细信息,还可以将这些信息复制到剪贴版中,当选择view detail时,会弹出如下图所示的窗口,进一步显示关于该异常的详细信息
Just My Code Debugging
在调试代码中,我们经常会遇到这样的问题,有时我们引用了一些其他工具包或者类库(如Microsoft提供的Enterprise Library),而在调试时,我们其实是不需要跟踪调试这些代码的,因为它们都已经证明是正确的。在Visual Studio 2003中,处理这类问题我们的方法一般是使用F10跳过它们,但一旦工程庞大的话,这样做十分麻烦。在Visual Studio 2005中,新增加了Just My Code debugging(JMC)的新特性,可以让开发者自己定制哪些代码是需要调试,哪些代码是永远不需要调试的,这样可以节省大量的时间。
JMC功能由两方面来实现。首先,如果一个工程是以release方式进行编译构建的话(就是工程中,没有pdb文件),调试器会将其认为是非用户代码,那么在调试运行时,就根本不会进入该工程中进行调试。其次,可以使用System.Diagnostics命名空间里的DebuggerNonUserCodeAttribute属性,将其应用在希望不进行调试的代码段中。
下面举一个例子来说明。下面的代码段中,有两个静态方法UserCode()和NonUserCode(),其中,在NonUserCode()中,是应用了DebuggerNonUserCode的属性,这表明这段代码将在调试运行时,调试器不会进入其中。将断点设置在其中的第9行,运行程序,程序会在第一个UserCode()里中断,现在试着用F11继续单步跟踪,会发现系统在进入usercode()方法中运行后,并没有进入到NonUserCode()里运行。
using System; |
编辑时对象识别
在Visual Studio 2005中,新引入了"Object Identity While Debugging"的概念,也就是说,系统给在调试阶段的每个对象,都可以赋予一个别名,在调试时,直接引用该别名就可以了。
假设在调试的时候,需要跟踪比如dataset或者hashtable等对象,这些对象中包含了很多其他的子对象,如果想对这些数量众多的子对象进行跟踪的话,将十分麻烦。在Visual Studio 2005中,可以使用object identity(对象标识)的方法去标记每一个对象,
比如,在一个windows应用程序中,创建了一个dataset,并将其绑定到datagridview中去。如将sql server 的northwind数据库中的orders和orderdetail表中的数据读出填充到dataset里去,则在调试时,设置一个断点放在dataset里填充了数据之后的那行,这时,在监视窗口中,鼠标展开this.northwindData这个dataset,如下图所示,找到orders这个table,然后鼠标右键,会弹出一个菜单,选择其中的" Make Object ID".
这时,会将orders这个参数以1#的别名方式命名(见下图),并且在整个应用程序中,只要在dataset的生存期,都可以以1#的方式访问它。
下图的代码演示了如何在immediate监视窗口中,通过使用object 标识,查看某一个表中所有记录的方法。要注意的是,必须将其显式类型转换为DataApp.NorthwidDataSet.OrdersDataTable。通过使用object 标识的好处是,可以在调试阶段,不需要在描述某个参数时,再用冗余的命名方法表示了(比如可以用#1来代替this.NorthwidDataSet.Orders)
最近学习asp.net 2.0时新编译修改的一篇文章,原文发表在http://dev.yesky.com/msdn/359/2195359.shtml上,现转到这里。
在日常的编程中,程序员经常离不开的工作之一,就是调试。当写好一段代码或程序后,在运行后总会出现这样那样的问题,比如各样的错误,程序员就必须进行调试,将这些错误排除。在最新出炉的Visual Studio 2005中,将提供十分强大而方便的调试功能,从而使程序员能节约时间,提高工作效率。本文中,将主要介绍Visual Studio 2005 在调试方面新增加的几个重要功能,并介绍它们的简单用法。
Edit and Contiue功能
在调试程序的时候,经常会遇到这样的情况:在调试一大段代码时,遇到了一个小的错误,比如参数的赋值错误了,这时候,往往希望能够马上将这些小的错误改正过来后,能够继续调试跟踪下去,而不用结束整个调试过程去修改。在Visual Studio 2003中,我们必须停止当前的调试,修改错误的地方,再重新编译,这样十分不方便。在Visual Studio 2005 中,提供了一个新的功能叫"edit and continue",意思是说,当你在调试时,遇到小的错误需要马上修改后,可以进行编辑修改,然后继续往下调试,不需要结束整个调试的过程,当你修改后,调试器在后台进行了自动的编译,并且会执行新修改的代码,十分方便。下面举个例子进行说明。
打开Visual Studio 2005,使用c#建立一个winform窗体应用程序,在窗体中添加一个label标签,一个文本框,一个按钮,如下图所示,我们要实现的功能是,在文本框输入一些信息后,点按钮,会弹出一个消息框,显示的是刚才输入的信息。
假如我们编写的代码如下所示,出现了一个小错误,把textbox1.text的内容当作字符串的一部分了,所以显示不出用户输入的信息。
private void button1_Click(object sender, EventArgs e) |
现在,如果我们在调试时遇到了这个错误,则可以使用edit and continue功能来进行改正。
首先,按F7切换到代码视图,在MessageBox.Show这一行设置断点,之后按F5运行程序,当在文本框输入字符串时,由于设置了中断,光标停留在messagebox.show这行上,这时,我们可以修改代码,修改为:
private void button1_Click(object sender, EventArgs e) |
修改完后,继续按F5运行,这时候,则会显示正确的结果了,如下图,而不需要使用以往的"stop debugging"的功能先停止调试再修改程序。
可视化调试器(Debugging Visualizers)
在调试的时候,我们遇到的一个很麻烦的问题,就是有的时候很难看到某些参数的值。比如当你设置了一个断点去监测一个dataset,并且想看dataset里的每个datatable的数据,这在Visual Studio 2003中,是十分麻烦的,必须在auto/locals的监视窗口中,一层层地展开去看其值。在Visual Studio 2005中,为解决这个问题,新增加了叫"debugging visualizers"(可视化调试器)的功能,该功能可以在调试状态时,很容易方便地以各类形式,比如文本,html,xml等方式查看各种参数。
在各类的监视窗口中,比如在autos,locals,watch和quickwatch 中都可以调用可视化调试器,方法是在某个需要监视的参数旁边,点击那个放大镜图标,就可以在打开的可视化调试器中看到该参数的详细情况,如下图所示:
利用可视化调试器,就可以很方便地查看比如dataset类型的数据,如下图所示:
Data Tips
在Visual Studio 2005中,在调试方面,还新增了"data tips(数据提示)"的功能。当在调试程序期间,只需要将光标移到代码中某个需要监视的参数上,系统就会自动显示与该参数相关联的一些很有用的信息,比如相关的属性,以及当前该参数的值。在Visual Studio 2003中,也有该功能,但提供的信息比现在的2005少很多。
我们依然以上面"edit and continue"使用的例子来说明。我们将断点设在MessageBox.Show这一行,F5运行程序,当在文本框输入文字并按确定按钮后,程序自动中断,这时,将光标移到textbox1.text这个位置,系统就会调用data tips功能,如下图所示显示出与textbox文本框控件相关的一些属性以及这些属性此时对应的值。
在data tip的功能中,还可以继续使用edit and continue的功能,只需要在需要的地方鼠标右键就可以弹出如下图的菜单,可以编辑该值。
Exception Assistant(异常助手)
在Visual Studio .net 2003中,当程序运行出现异常时,系统会显示一个异常信息对话框,询问是否停止程序执行或继续运行程序,但并没有提供给开发者更多的关于异常的信息。在Visual Studio .net 2005中,提供了 Exception Assistant(异常助手)的新功能,可以显示丰富的关于异常方面的信息,帮助开发者调试,如下图
在上图中,显示的是一个sqlException,是由于超时连接而造成的。在异常助手的窗口中,显示了关于该异常的详细信息,还可以将这些信息复制到剪贴版中,当选择view detail时,会弹出如下图所示的窗口,进一步显示关于该异常的详细信息
Just My Code Debugging
在调试代码中,我们经常会遇到这样的问题,有时我们引用了一些其他工具包或者类库(如Microsoft提供的Enterprise Library),而在调试时,我们其实是不需要跟踪调试这些代码的,因为它们都已经证明是正确的。在Visual Studio 2003中,处理这类问题我们的方法一般是使用F10跳过它们,但一旦工程庞大的话,这样做十分麻烦。在Visual Studio 2005中,新增加了Just My Code debugging(JMC)的新特性,可以让开发者自己定制哪些代码是需要调试,哪些代码是永远不需要调试的,这样可以节省大量的时间。
JMC功能由两方面来实现。首先,如果一个工程是以release方式进行编译构建的话(就是工程中,没有pdb文件),调试器会将其认为是非用户代码,那么在调试运行时,就根本不会进入该工程中进行调试。其次,可以使用System.Diagnostics命名空间里的DebuggerNonUserCodeAttribute属性,将其应用在希望不进行调试的代码段中。
下面举一个例子来说明。下面的代码段中,有两个静态方法UserCode()和NonUserCode(),其中,在NonUserCode()中,是应用了DebuggerNonUserCode的属性,这表明这段代码将在调试运行时,调试器不会进入其中。将断点设置在其中的第9行,运行程序,程序会在第一个UserCode()里中断,现在试着用F11继续单步跟踪,会发现系统在进入usercode()方法中运行后,并没有进入到NonUserCode()里运行。
using System; |
编辑时对象识别
在Visual Studio 2005中,新引入了"Object Identity While Debugging"的概念,也就是说,系统给在调试阶段的每个对象,都可以赋予一个别名,在调试时,直接引用该别名就可以了。
假设在调试的时候,需要跟踪比如dataset或者hashtable等对象,这些对象中包含了很多其他的子对象,如果想对这些数量众多的子对象进行跟踪的话,将十分麻烦。在Visual Studio 2005中,可以使用object identity(对象标识)的方法去标记每一个对象,
比如,在一个windows应用程序中,创建了一个dataset,并将其绑定到datagridview中去。如将sql server 的northwind数据库中的orders和orderdetail表中的数据读出填充到dataset里去,则在调试时,设置一个断点放在dataset里填充了数据之后的那行,这时,在监视窗口中,鼠标展开this.northwindData这个dataset,如下图所示,找到orders这个table,然后鼠标右键,会弹出一个菜单,选择其中的" Make Object ID".
这时,会将orders这个参数以1#的别名方式命名(见下图),并且在整个应用程序中,只要在dataset的生存期,都可以以1#的方式访问它。
下图的代码演示了如何在immediate监视窗口中,通过使用object 标识,查看某一个表中所有记录的方法。要注意的是,必须将其显式类型转换为DataApp.NorthwidDataSet.OrdersDataTable。通过使用object 标识的好处是,可以在调试阶段,不需要在描述某个参数时,再用冗余的命名方法表示了(比如可以用#1来代替this.NorthwidDataSet.Orders)
最近学习asp.net 2.0时新编译修改的一篇文章,原文发表在http://dev.yesky.com/msdn/359/2195359.shtml上,现转到这里。
在日常的编程中,程序员经常离不开的工作之一,就是调试。当写好一段代码或程序后,在运行后总会出现这样那样的问题,比如各样的错误,程序员就必须进行调试,将这些错误排除。在最新出炉的Visual Studio 2005中,将提供十分强大而方便的调试功能,从而使程序员能节约时间,提高工作效率。本文中,将主要介绍Visual Studio 2005 在调试方面新增加的几个重要功能,并介绍它们的简单用法。
Edit and Contiue功能
在调试程序的时候,经常会遇到这样的情况:在调试一大段代码时,遇到了一个小的错误,比如参数的赋值错误了,这时候,往往希望能够马上将这些小的错误改正过来后,能够继续调试跟踪下去,而不用结束整个调试过程去修改。在Visual Studio 2003中,我们必须停止当前的调试,修改错误的地方,再重新编译,这样十分不方便。在Visual Studio 2005 中,提供了一个新的功能叫"edit and continue",意思是说,当你在调试时,遇到小的错误需要马上修改后,可以进行编辑修改,然后继续往下调试,不需要结束整个调试的过程,当你修改后,调试器在后台进行了自动的编译,并且会执行新修改的代码,十分方便。下面举个例子进行说明。
打开Visual Studio 2005,使用c#建立一个winform窗体应用程序,在窗体中添加一个label标签,一个文本框,一个按钮,如下图所示,我们要实现的功能是,在文本框输入一些信息后,点按钮,会弹出一个消息框,显示的是刚才输入的信息。
假如我们编写的代码如下所示,出现了一个小错误,把textbox1.text的内容当作字符串的一部分了,所以显示不出用户输入的信息。
private void button1_Click(object sender, EventArgs e) |
现在,如果我们在调试时遇到了这个错误,则可以使用edit and continue功能来进行改正。
首先,按F7切换到代码视图,在MessageBox.Show这一行设置断点,之后按F5运行程序,当在文本框输入字符串时,由于设置了中断,光标停留在messagebox.show这行上,这时,我们可以修改代码,修改为:
private void button1_Click(object sender, EventArgs e) |
修改完后,继续按F5运行,这时候,则会显示正确的结果了,如下图,而不需要使用以往的"stop debugging"的功能先停止调试再修改程序。
可视化调试器(Debugging Visualizers)
在调试的时候,我们遇到的一个很麻烦的问题,就是有的时候很难看到某些参数的值。比如当你设置了一个断点去监测一个dataset,并且想看dataset里的每个datatable的数据,这在Visual Studio 2003中,是十分麻烦的,必须在auto/locals的监视窗口中,一层层地展开去看其值。在Visual Studio 2005中,为解决这个问题,新增加了叫"debugging visualizers"(可视化调试器)的功能,该功能可以在调试状态时,很容易方便地以各类形式,比如文本,html,xml等方式查看各种参数。
在各类的监视窗口中,比如在autos,locals,watch和quickwatch 中都可以调用可视化调试器,方法是在某个需要监视的参数旁边,点击那个放大镜图标,就可以在打开的可视化调试器中看到该参数的详细情况,如下图所示:
利用可视化调试器,就可以很方便地查看比如dataset类型的数据,如下图所示:
Data Tips
在Visual Studio 2005中,在调试方面,还新增了"data tips(数据提示)"的功能。当在调试程序期间,只需要将光标移到代码中某个需要监视的参数上,系统就会自动显示与该参数相关联的一些很有用的信息,比如相关的属性,以及当前该参数的值。在Visual Studio 2003中,也有该功能,但提供的信息比现在的2005少很多。
我们依然以上面"edit and continue"使用的例子来说明。我们将断点设在MessageBox.Show这一行,F5运行程序,当在文本框输入文字并按确定按钮后,程序自动中断,这时,将光标移到textbox1.text这个位置,系统就会调用data tips功能,如下图所示显示出与textbox文本框控件相关的一些属性以及这些属性此时对应的值。
在data tip的功能中,还可以继续使用edit and continue的功能,只需要在需要的地方鼠标右键就可以弹出如下图的菜单,可以编辑该值。
Exception Assistant(异常助手)
在Visual Studio .net 2003中,当程序运行出现异常时,系统会显示一个异常信息对话框,询问是否停止程序执行或继续运行程序,但并没有提供给开发者更多的关于异常的信息。在Visual Studio .net 2005中,提供了 Exception Assistant(异常助手)的新功能,可以显示丰富的关于异常方面的信息,帮助开发者调试,如下图
在上图中,显示的是一个sqlException,是由于超时连接而造成的。在异常助手的窗口中,显示了关于该异常的详细信息,还可以将这些信息复制到剪贴版中,当选择view detail时,会弹出如下图所示的窗口,进一步显示关于该异常的详细信息
Just My Code Debugging
在调试代码中,我们经常会遇到这样的问题,有时我们引用了一些其他工具包或者类库(如Microsoft提供的Enterprise Library),而在调试时,我们其实是不需要跟踪调试这些代码的,因为它们都已经证明是正确的。在Visual Studio 2003中,处理这类问题我们的方法一般是使用F10跳过它们,但一旦工程庞大的话,这样做十分麻烦。在Visual Studio 2005中,新增加了Just My Code debugging(JMC)的新特性,可以让开发者自己定制哪些代码是需要调试,哪些代码是永远不需要调试的,这样可以节省大量的时间。
JMC功能由两方面来实现。首先,如果一个工程是以release方式进行编译构建的话(就是工程中,没有pdb文件),调试器会将其认为是非用户代码,那么在调试运行时,就根本不会进入该工程中进行调试。其次,可以使用System.Diagnostics命名空间里的DebuggerNonUserCodeAttribute属性,将其应用在希望不进行调试的代码段中。
下面举一个例子来说明。下面的代码段中,有两个静态方法UserCode()和NonUserCode(),其中,在NonUserCode()中,是应用了DebuggerNonUserCode的属性,这表明这段代码将在调试运行时,调试器不会进入其中。将断点设置在其中的第9行,运行程序,程序会在第一个UserCode()里中断,现在试着用F11继续单步跟踪,会发现系统在进入usercode()方法中运行后,并没有进入到NonUserCode()里运行。
using System; |
编辑时对象识别
在Visual Studio 2005中,新引入了"Object Identity While Debugging"的概念,也就是说,系统给在调试阶段的每个对象,都可以赋予一个别名,在调试时,直接引用该别名就可以了。
假设在调试的时候,需要跟踪比如dataset或者hashtable等对象,这些对象中包含了很多其他的子对象,如果想对这些数量众多的子对象进行跟踪的话,将十分麻烦。在Visual Studio 2005中,可以使用object identity(对象标识)的方法去标记每一个对象,
比如,在一个windows应用程序中,创建了一个dataset,并将其绑定到datagridview中去。如将sql server 的northwind数据库中的orders和orderdetail表中的数据读出填充到dataset里去,则在调试时,设置一个断点放在dataset里填充了数据之后的那行,这时,在监视窗口中,鼠标展开this.northwindData这个dataset,如下图所示,找到orders这个table,然后鼠标右键,会弹出一个菜单,选择其中的" Make Object ID".
这时,会将orders这个参数以1#的别名方式命名(见下图),并且在整个应用程序中,只要在dataset的生存期,都可以以1#的方式访问它。
下图的代码演示了如何在immediate监视窗口中,通过使用object 标识,查看某一个表中所有记录的方法。要注意的是,必须将其显式类型转换为DataApp.NorthwidDataSet.OrdersDataTable。通过使用object 标识的好处是,可以在调试阶段,不需要在描述某个参数时,再用冗余的命名方法表示了(比如可以用#1来代替this.NorthwidDataSet.Orders)
最近学习asp.net 2.0时新编译修改的一篇文章,原文发表在http://dev.yesky.com/msdn/359/2195359.shtml上,现转到这里。
在日常的编程中,程序员经常离不开的工作之一,就是调试。当写好一段代码或程序后,在运行后总会出现这样那样的问题,比如各样的错误,程序员就必须进行调试,将这些错误排除。在最新出炉的Visual Studio 2005中,将提供十分强大而方便的调试功能,从而使程序员能节约时间,提高工作效率。本文中,将主要介绍Visual Studio 2005 在调试方面新增加的几个重要功能,并介绍它们的简单用法。
Edit and Contiue功能
在调试程序的时候,经常会遇到这样的情况:在调试一大段代码时,遇到了一个小的错误,比如参数的赋值错误了,这时候,往往希望能够马上将这些小的错误改正过来后,能够继续调试跟踪下去,而不用结束整个调试过程去修改。在Visual Studio 2003中,我们必须停止当前的调试,修改错误的地方,再重新编译,这样十分不方便。在Visual Studio 2005 中,提供了一个新的功能叫"edit and continue",意思是说,当你在调试时,遇到小的错误需要马上修改后,可以进行编辑修改,然后继续往下调试,不需要结束整个调试的过程,当你修改后,调试器在后台进行了自动的编译,并且会执行新修改的代码,十分方便。下面举个例子进行说明。
打开Visual Studio 2005,使用c#建立一个winform窗体应用程序,在窗体中添加一个label标签,一个文本框,一个按钮,如下图所示,我们要实现的功能是,在文本框输入一些信息后,点按钮,会弹出一个消息框,显示的是刚才输入的信息。
假如我们编写的代码如下所示,出现了一个小错误,把textbox1.text的内容当作字符串的一部分了,所以显示不出用户输入的信息。
private void button1_Click(object sender, EventArgs e) |
现在,如果我们在调试时遇到了这个错误,则可以使用edit and continue功能来进行改正。
首先,按F7切换到代码视图,在MessageBox.Show这一行设置断点,之后按F5运行程序,当在文本框输入字符串时,由于设置了中断,光标停留在messagebox.show这行上,这时,我们可以修改代码,修改为:
private void button1_Click(object sender, EventArgs e) |
修改完后,继续按F5运行,这时候,则会显示正确的结果了,如下图,而不需要使用以往的"stop debugging"的功能先停止调试再修改程序。
可视化调试器(Debugging Visualizers)
在调试的时候,我们遇到的一个很麻烦的问题,就是有的时候很难看到某些参数的值。比如当你设置了一个断点去监测一个dataset,并且想看dataset里的每个datatable的数据,这在Visual Studio 2003中,是十分麻烦的,必须在auto/locals的监视窗口中,一层层地展开去看其值。在Visual Studio 2005中,为解决这个问题,新增加了叫"debugging visualizers"(可视化调试器)的功能,该功能可以在调试状态时,很容易方便地以各类形式,比如文本,html,xml等方式查看各种参数。
在各类的监视窗口中,比如在autos,locals,watch和quickwatch 中都可以调用可视化调试器,方法是在某个需要监视的参数旁边,点击那个放大镜图标,就可以在打开的可视化调试器中看到该参数的详细情况,如下图所示:
利用可视化调试器,就可以很方便地查看比如dataset类型的数据,如下图所示:
Data Tips
在Visual Studio 2005中,在调试方面,还新增了"data tips(数据提示)"的功能。当在调试程序期间,只需要将光标移到代码中某个需要监视的参数上,系统就会自动显示与该参数相关联的一些很有用的信息,比如相关的属性,以及当前该参数的值。在Visual Studio 2003中,也有该功能,但提供的信息比现在的2005少很多。
我们依然以上面"edit and continue"使用的例子来说明。我们将断点设在MessageBox.Show这一行,F5运行程序,当在文本框输入文字并按确定按钮后,程序自动中断,这时,将光标移到textbox1.text这个位置,系统就会调用data tips功能,如下图所示显示出与textbox文本框控件相关的一些属性以及这些属性此时对应的值。
在data tip的功能中,还可以继续使用edit and continue的功能,只需要在需要的地方鼠标右键就可以弹出如下图的菜单,可以编辑该值。
Exception Assistant(异常助手)
在Visual Studio .net 2003中,当程序运行出现异常时,系统会显示一个异常信息对话框,询问是否停止程序执行或继续运行程序,但并没有提供给开发者更多的关于异常的信息。在Visual Studio .net 2005中,提供了 Exception Assistant(异常助手)的新功能,可以显示丰富的关于异常方面的信息,帮助开发者调试,如下图
在上图中,显示的是一个sqlException,是由于超时连接而造成的。在异常助手的窗口中,显示了关于该异常的详细信息,还可以将这些信息复制到剪贴版中,当选择view detail时,会弹出如下图所示的窗口,进一步显示关于该异常的详细信息
Just My Code Debugging
在调试代码中,我们经常会遇到这样的问题,有时我们引用了一些其他工具包或者类库(如Microsoft提供的Enterprise Library),而在调试时,我们其实是不需要跟踪调试这些代码的,因为它们都已经证明是正确的。在Visual Studio 2003中,处理这类问题我们的方法一般是使用F10跳过它们,但一旦工程庞大的话,这样做十分麻烦。在Visual Studio 2005中,新增加了Just My Code debugging(JMC)的新特性,可以让开发者自己定制哪些代码是需要调试,哪些代码是永远不需要调试的,这样可以节省大量的时间。
JMC功能由两方面来实现。首先,如果一个工程是以release方式进行编译构建的话(就是工程中,没有pdb文件),调试器会将其认为是非用户代码,那么在调试运行时,就根本不会进入该工程中进行调试。其次,可以使用System.Diagnostics命名空间里的DebuggerNonUserCodeAttribute属性,将其应用在希望不进行调试的代码段中。
下面举一个例子来说明。下面的代码段中,有两个静态方法UserCode()和NonUserCode(),其中,在NonUserCode()中,是应用了DebuggerNonUserCode的属性,这表明这段代码将在调试运行时,调试器不会进入其中。将断点设置在其中的第9行,运行程序,程序会在第一个UserCode()里中断,现在试着用F11继续单步跟踪,会发现系统在进入usercode()方法中运行后,并没有进入到NonUserCode()里运行。
using System; |
编辑时对象识别
在Visual Studio 2005中,新引入了"Object Identity While Debugging"的概念,也就是说,系统给在调试阶段的每个对象,都可以赋予一个别名,在调试时,直接引用该别名就可以了。
假设在调试的时候,需要跟踪比如dataset或者hashtable等对象,这些对象中包含了很多其他的子对象,如果想对这些数量众多的子对象进行跟踪的话,将十分麻烦。在Visual Studio 2005中,可以使用object identity(对象标识)的方法去标记每一个对象,
比如,在一个windows应用程序中,创建了一个dataset,并将其绑定到datagridview中去。如将sql server 的northwind数据库中的orders和orderdetail表中的数据读出填充到dataset里去,则在调试时,设置一个断点放在dataset里填充了数据之后的那行,这时,在监视窗口中,鼠标展开this.northwindData这个dataset,如下图所示,找到orders这个table,然后鼠标右键,会弹出一个菜单,选择其中的" Make Object ID".
这时,会将orders这个参数以1#的别名方式命名(见下图),并且在整个应用程序中,只要在dataset的生存期,都可以以1#的方式访问它。
下图的代码演示了如何在immediate监视窗口中,通过使用object 标识,查看某一个表中所有记录的方法。要注意的是,必须将其显式类型转换为DataApp.NorthwidDataSet.OrdersDataTable。通过使用object 标识的好处是,可以在调试阶段,不需要在描述某个参数时,再用冗余的命名方法表示了(比如可以用#1来代替this.NorthwidDataSet.Orders)
转载于:https://www.cnblogs.com/kimi/archive/2007/10/18/929425.html
Visual Studio 2005中编译调试新功能相关推荐
- Visual Studio 2005 中的新增安全性功能
Visual Studio 2005 中的新增安全性功能 Visual Studio 2005 中的新增安全性功能 发布日期: 11/18/2005 | 更新日期: 11/18/2005 Brian ...
- Microsoft Visual Studio 2005中使用水晶报表
Microsoft Visual Studio 2005中使用水晶报表 沈阳 王智 OICQ:16994162 http://wangzhihome.51.net/ 2006-4-11 如有转贴请注明 ...
- 图解Visual Studio 2010中的UML建模功能
Visual Studio 2010在架构和项目管理方面的功能增加让人眼前一亮,之前曾详细介绍过Visual Studio 2010新增的架构工具,包括通过可视化技术DGML提供直观的图表,依赖图,继 ...
- 在visual studio 2005中配置iup环境
在Visual Studio 2005中配置iup环境 原本是想在Linux环境中配置iup的,折腾了两天都没有成功.想着先在windows中试一下.所以这里把配置的过程写一下. 1.下载iup的wi ...
- 解决OpenSSL加入到在Visual Studio 2019中编译返回LNK2019错误
文章目录 小结 问题和解决 Error LNK2019 Error LNK1104 Warning C4996 参考 小结 碰到了OpenSSL加入到在Visual Studio 2019中编译返回L ...
- 在Visual Studio 2005中调试SQL Server 2005的存储过程
介绍 SQL Server 2000可以让我们在查询分析器中直接调试存储过程( 更多的信息请参看:用SQL Server 2000的查询分析器调试存储过程) 到了现在的SQL Server 2005, ...
- 在Visual Studio 2005中安装Qt 4.3.2
1.正常安装Visual Studio 2005,只要安装了C++即可.注意:不是Express版本. 2.下载Qt源代码 Qt 4.3.2 Windows OpenSource版下载: http:/ ...
- Visual Studio 2005中C++的变化
下一代visual studio版本(以前whidbey,现在是visual studio 2005)提供更加丰富的改进的库文件和没有很多幕后精简和加速的压力,它的大量配合的工具和新的功能将使开发者的 ...
- Visual Studio 2005 中的 命令窗口
"命令"窗口用于直接在 Visual Studio 集成开发环境 (IDE) 中执行命令或别名.可以执行菜单命令和不在任何菜单上显示的命令. 1 调用命令窗口: 若要显示" ...
最新文章
- 多媒体视像会议中音视频矩阵的用途
- Jenkins构建自动化脚本执行无界面解决方法
- 打工人一次性考过高项的备考指南(52.50.50)
- 一图揭示:营销的目的、策略、战略
- div+css 你知道多少?值得一看
- json string 格式_GO小知识之如何做JSON美化
- c语言设计第4章答案,《C语言程序设计》第4章习题答案.doc
- sql cte递归_准备好,开始吧– SQL Server如何处理递归CTE
- [转] js对象监听实现
- MAC版pycharm快捷键
- android 手机屏幕实际大小,揭秘手机屏幕误区 大尺寸≠大可视面积
- 黑客防线2012合订本
- RAR压缩包密码如何解密
- [WPF 如何] 如何向 ComboBox 添加一个空白选项
- 华为matebook鸿蒙,16寸专业大屏+满血Zen3!华为MateBook 16评测:鸿蒙加持 平板变身新外设...
- 位移到速度的变化 matlab,单摆运动过程的matlabsimulink建模与仿真.doc
- 【JZOJ100208】【20190705】传说之下
- 红绿灯(交通信号灯)检测数据集
- Web安全—敏感信息泄露
- 记录小知识:Arouter 组件间通讯实体类数据
热门文章
- 王重敏的“中国主义”
- 热转印法手工自制单面PCB流程和技巧总结
- Ubuntu中配置NFS服务
- VS2010 + OpenCV 2.4.1 环境配置
- 使用握手信号实现跨时钟域数据传输
- html提交多个正则表达式,将多个html文件的正则表达式结果写入.txt outfile
- linux下shell脚本论文,Linux下Shell脚本编程
- Unity Built-in Shader转URP Shader 接口查询对照表
- matlab求距离判别函数,求MATLAB的逐步判别程序 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
- css 清除浮动float 嗒嘀嗒滴 ----20181120