本章介绍的调试技术使用 Visual Basic 提供的分析工具。Visual Basic 不能诊断或更正错误,但确实能提供工具来帮助分析运行是如何从过程的一部分流动到另一部分的,分析变量和属性是如何随着语句的执行而改变的。有了调试工具,就能深入到应用程序内部去观察,从而确定到底发生了什么以及为什么会发生。
Visual Basic 的调试支持包括:断点、中断表达式、监视表达式、通过代码一次经过一个语句或一个过程、显示变量和属性的值。Visual Basic 还包括专门的调试功能,比如可在运行过程中进行编辑、设置下一个执行语句以及在应用程序处于中断模式时进行过程测试等。
详细信息 关于 Visual Basic 调试的概述,请参阅本章后面部分“调试的提示”。
为了更有效地使用调试手段,把可能遇到的错误分成三类:
编译错误是由于不正确构造代码而产生的。如果不正确地键入了关键字、遗漏了某些必需的标点符号或在设计时使用了一个 Next 语句而没有 For 语句与之对应,那么 Visual Basic 在编译应用程序时就会检测到这些错误。
编译错误还包括语法错误。例如,可能会有象下面这样的语句:
Left
在 Visual Basic 语言中,Left 是一个有效的词,由于在它的前面没有 object,所以不符合该词的语法要求 (object.Left)。如果已在“选项”对话框的“编辑器”选项卡中选定“自动语法检测”选项,那么,只要在“代码”窗口中输入一个语法错误,Visual Basic 就会立即显示错误消息。
要设置“自动语法检测”选项,请按照以下步骤执行:
详细信息 关于在代码中用来避免错误的其它技术,请参阅本章后面部分“避免错误”。
应用程序正在运行(而且被 Visual Basic 检测)期间,当一个语句力图执行一个不能执行的操作时,就会发生运行时错误。下面是一个除数为 0 的例子。假定有这样一个语句:
Speed = Miles / Hours
如果变量 Hours
的值为零,除法就是无效操作,尽管语句本身的语法是正确的。必须运行应用程序才能检测到这个错误。
详细信息 应用程序中可以包含处理运行时错误的代码,在这些错误发生时俘获并处理它们。关于处理运行时错误的详细信息,请参阅本章前面部分“如何处理错误”。
当应用程序未按预期方式执行时就会产生逻辑错误。从语法角度来看,应用程序的代码可以是有效的,在运行时也未执行无效操作,但还是产生了不正确的结果。应用程序运行的正确与否,只有通过测试应用程序和分析产生的结果才能检验出来。
调试工具的功能是帮助处理:
例如,在结束一长串计算后。可能会得到一个不正确的结果。调试过程的任务就是确定导致错误结果的原因,以及错误发生的地方。很可能是忘记了初始化某个变量、用错了操作符或使用了不正确的公式。
调试的技巧并不神秘,每次工作也无成规可循。调试主要是有助于了解在应用程序运行时正在发生的事情。调试工具提供了应用程序当前状态的快照,包括:
越是透彻了解应用程序的运行,就越是迅速发现错误。
详细信息 关于查看和测试变量、表达式、属性以及活动的过程调用等详细信息,请参阅本章后面的“用‘立即’窗口测试数据和过程”以及“监视调用堆栈”。
在众多调试工具中,Visual Basic 在可选的“调试”工具栏上提供了几个很有用的按钮。图 13.5 显示了这些工具。要显示“调试”工具栏,可在 Visual Basic 工具栏上单击鼠标右键并选定“调试”选项。
图 13.5 调试工具栏
下表简要叙述每个工具的用途。本章主题是讨论每个工具在什么情况下才能更有效地帮助调试或分析应用程序。
调试工具 | 目的 |
断点 | 在“代码”窗口中确定一行,Visual Basic 在该行终止应用程序的执行。 |
跟踪 | 执行应用程序代码的下一个可执行行,并跟踪到过程中。 |
单步 | 执行应用程序代码的下一个可执行行,但不跟踪到过程中。 |
单步出 | 执行当前过程的其它部分,并在调用过程的下一行处中断执行。 |
“本地”窗口 | 显示局部变量的当前值。 |
“立即”窗口 | 当应用程序处于中断模式时,允许执行代码或查询值。 |
“监视”窗口 | 显示选定表达式的值。 |
快速监视 | 当应用程序处于中断模式时,列出表达式的当前值。 |
调用堆栈 | 当处于中断模式时,呈现一个对话框来显示所有已被调用但尚未完成运行的过程。 |
详细信息 仅当应用程序有错误时才需要调试工具。请参阅本章后面的“避免错误” 。