六、程序调试和排错

在编写程序的过程中难免发生错误,程序调试就是查找和修改错误的过程。通常可以将程序错误分为:语法错误、运行时错误和逻辑错误。

1.语法错误

由于在修复错误之前程序不能运行,所以查找语法错误实际上相当容易。“启动调试”按钮运行程序时,如果存在语法错误,将显示如图1-12所示的对话框。如果选择“是”,将会运行上一个没有错误的程序版本;选择“否”,则程序将停止运行并出现“错误列表”窗口。

图1-12 发生语法错误时的对话框

“错误列表”窗口显示有关语法错误的信息,包括对错误的说明以及错误在代码中的位置。双击“错误列表”中错误内容,代码编辑器中将会突出显示有问题的代码。按F1键可以显示帮助窗口,并获取有关错误以及如何修复错误的更多信息,如图1-13所示。

图1-13 “错误列表”窗口

当用户在代码窗口输入完一行代码时,Visual Basic 2008会对程序直接进行语法检查。当发现语法错误时,用蓝色波浪下画线标记出该代码。将鼠标停留在那条线上,会显示一条描述该错误的信息。此时,如果已打开“错误列表”窗口的话,该错误信息也会在其中显示。

提示:选择“视图”→“错误列表”命令,可以打开“错误列表”窗口。

2.运行时错误

当程序通过编译,运行时产生的错误称为运行时错误。这类错误往往是由于执行了非法操作引起的。例如,除数为零、数组下标越界、试图打开一个不存在的文件等。当运行程序时,如果发现了这种错误,程序将停止,进入中断模式,并且“代码编辑器”窗口中会显示“异常助手”对话框。如图1-14所示。

图1-14 运行时错误

“异常助手”对话框包含对错误的说明,以及指出错误原因的故障排除提示。单击故障排除提示来显示帮助主题,以了解更多信息。

3.逻辑错误

程序运行后,没有提示出错信息,但得不到所期望的结果,说明存在逻辑错误。这往往是由于程序设计存在错误引起的,这类错误需要程序员仔细阅读程序,进行排错。在Visual Basic 2008中通常可以使用以下方法进行排错。

(1)设置断点和逐句跟踪

在设计模式或中断模式下,单击怀疑存在错误的语句行左侧的窗口边框或按F9键,边框上出现,即设置了断点。当运行程序到断点语句位置停下(该语句未执行),进入中断模式,此时将鼠标停留在要查看的变量上,将显示其值。单击“逐语句”按钮或按F8键将执行下一条语句,代码窗口左侧边框上显示,标记当前行位置。如图1-15所示。

图1-15 设置断点和逐句跟踪

(2)调试窗口

Visual Basic 2008提供了一系列调试工具。选择“视图”→“工具栏”→“调试”命令,显示“调试”工具栏,如图1-16所示。

图1-16 “调试”工具栏

在中断模式下,使用“调试”工具栏上的按钮可以打开即时窗口、局部变量窗口、监视窗口、调用堆栈窗口、自动窗口、输出窗口等,使用“视图”→“其他窗口”子菜单下的命令,可以打开命令窗口等。通过这些窗口,可以看出程序运行过程中的数据变化,从而找出错误。

例如,单击“调试”工具栏上的下拉列表,选择“自动窗口”命令,打开自动窗口,可以查看当前运行的代码行及其上、下行代码使用到的相关变量的值。如图1-17所示。

图1-17 自动窗口

又如,选择“视图”→“其他窗口”→“命令窗口”命令,打开命令窗口,输入命令“?x”,按Enter键后可以看到x变量的当前值,如图1-18所示。

图1-18 命令窗口