您的位置:首页 > 职场人生

黑马程序员_C#代码的调试问题

2013-06-16 18:26 239 查看
----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流!
----------------------

代码中有时难免存在错误,无论程序员多么谨慎,程序总是会出现一些问题。一些问题比较小,不会影响应用程序的执行,例如,按钮上的拼写错误等,但一些错误可能比较严重,会导致应用程序完全失败(通常称为致命错误),致命错误包括妨碍代码编译的简单错误(语法错误),或者只在运行期间发生的更严重的错误。一些错误可能会更微妙。也许应用程序不能给数据库添加一个记录,因为遗漏了一个请求的字段,或者在其它有限制的环境中把错误的数据添加到到记录中。应用程序的逻辑在某些方面有瑕疵时,就会产生这样的错误,此类错误成为语义错误(或逻辑错误)。

当应用程序不能正常工作时,需要跟踪代码,确定发生了什么问题,并修改代码,使之按照希望的那样工作。在这种情况下,Visual Studio 2010的调试功能就可以大显身手了。在Visual Studio 2010中,可以采用两种方式执行应用程序:调试模式和非调试模式。在vs2010中执行应用程序时,它默认在调试模式下执行。例如,按下F5键或单击工具栏中的绿色Play按钮时,就是在调试模式下执行应用程序。要在非调试模式下执行应用程序,应选择 调试| 开始执行不调试(Ctrl+F5).

在调试配置下生成应用程序,在调试模式下运行程序时,并不仅仅是运行编写好的代码。调试程序包含了应用程序的符号信息,所以IDE知道执行每行代码时发生了什么。符号信息意味着跟踪未编译代码中使用的变量名,这样,它们就可以匹配已编译的机器码应用程序中现有的值,而机器码程序不包含人们易于读取的信息。此类信息包含在.pdb文件中,这些文件位于计算机的Debug目录下。它们可以执行很多有用的操作,包括:

● 向IDE输出调试信息

●在执行应用程序期间查看和编辑变量的值

●暂停程序和重启程序

● 在代码的某个位置自动暂停程序的执行

●一次执行程序中的一行代码

●在应用程序的执行期间监视变量内容的变化

●在运行期间修改变量内容

●测试函数的调用

发布版本运行的比较快,完成了应用程序的开发时,一般应给用户提供发布版本,因为发布版本不需要调试版本所包含的符号信息。

在vs2010的术语中,应用程序可以处于运行状态,也可以处于中断模式,即暂停正常的执行。

下面首先介绍非中断模式(运行期间或正常执行)技术。

1.输出调试信息

在运行期间把文本写入Output窗口是非常简单的。只要用需要的调用替代Console.WriteLine()调用,就可以把文本写到希望的地方。此时可以使用如下两个命令:

●Debug.WriteLine()

●Trace.WriteLine()

这两个命令函数的用法几乎完全相同,但有一个重要区别。第一个命令仅在调试模式下运行,而第二个命令还可以用于发布程序。实际上,Debug.WriteLine()命令不能编译为可发布的程序,在发布版本中,该命令会消失。

2.跟踪点

另一种把信息输出到Output窗口中的方法是使用跟踪点。这是Visual Studio的一个功能,而不是C#的功能,但其作用与使用Debug.WriteLine()相同。它实际上是输出调试信息且不修改代码的一种方式。

3.诊断输出与跟踪点

前面介绍了两种输出相同信息的方法,下面看看它们的优缺点。

首先,跟踪点与Trace命令并不等价,也就是说,不能使用跟踪点在发布版本中输出信息。这是因为跟踪点并没有包含在应用程序中。跟踪点由VS处理,在应用程序的已编译版本中,跟踪点是不存在的。只用应用程序运行在VS调试器中时,跟踪点才起作用。

跟踪点的主要缺点也是其优点,即它们存储在VS中,因此可以在需要时快速、方便地添加到应用程序中,而且也非常容易删除。如果输出非常复杂的信息字符串,觉得跟踪点非常讨厌,只需要单击表示其位置的红色菱形,就可以删除跟踪点。

跟踪点的一个优点是允许方便的添加额外的信息,这个信息可以用Debug和Trace命令来编写,但比较难。

总结一下,输出调试信息的两种方法是:

● 诊断输出:总是要从应用程序中输出调试结果时使用这种方法,尤其是在要输出的字符串比较复杂,涉及几个变量或许多信息的情况下,使用该方法比较好。另外,如果要在发布模式下获得执行应用程序的调试结果,Trace命令常常是唯一的选择。

●跟踪点:调试应用程序时,希望快速输出重要信息,以便解决语义错误,应使用跟踪点。

其次介绍中断模式下的调试:

调试技术的剩余内容是在中断模式下工作。可以通过几种方式进入这种模式,这些方式都可以暂停程序的执行。

1.进入中断模式

断点

断点是源代码中自动进入中断模式的一个标记,它们可以配置为:

● 在遇到断点时,立即进入中断模式

● 在遇到断点时,如果布尔表达式的值为true,就进入中断模式

● 遇到某断点一定的次数后,进入中断模式

● 在遇到断点时,如果自从上次遇到断点以来变量的值发生了变化,就进入中断模式

● 把文本输出到Output窗口中

注意,上述功能仅能用于调试程序。如果编译发布程序,将会忽略所有断点。

2.监视变量的内容

查看变量值的最简单方式是在中断模式下,是鼠标指向源代码中的变量名,此时就会出现一个黄色的工具提示,显示该变量的信息,包括该变量的当前值。

3.单步执行代码

进入中断模式后,在代码视图的左边,正在执行的代码旁边会出现一个光标(如果使用断点进入中断模式,该光标最初应显示在断点的红色圆圈中),这显示了在进入中断模式时程序执行到的位置,可以选择逐行执行。

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流!
----------------------

详细请查看:http://edu.csdn.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: