程序调试与错误处理课件_第1页
程序调试与错误处理课件_第2页
程序调试与错误处理课件_第3页
程序调试与错误处理课件_第4页
程序调试与错误处理课件_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序调试主要通过“调试”菜单和“调试”工具条来实现。用“调试”工具条来调试程序比较方便。从菜单:视图—工具栏中选中“调试”,或右击工具栏上弹出的快捷菜单中选择“调试”,就能打开“调试”工具条。本地窗口立即窗口监视窗口快速监视调用堆栈启动中断结束切换断点逐语句跳出逐过程一、VisualBasic的三种工作模式

从设计到执行,一个VisualBasic应用程序处于三种不同的模式:即设计模式、执行模式和中断模式。1.设计模式(DesignMode)启动VisualBasic后,即进入设计模式,在主窗口标题栏上显示“[设计]”字样。建立一个应用程序的所有步骤基本上都在设计模式下完成,包括窗体设计、建立控件、编写程序代码以及利用属性窗口设置属性值或查看当前属性值等。在设计阶段,不能执行程序,也不能使用调试工具,但可设置断点。执行“运行”菜单中的“启动”命令(或按F5键、或单击工具条中的“启动”按钮),即进入执行模式,此时主窗口标题栏上原来显示“[设计]”的地方已被“[运行]”代替。进入执行阶段后,VisualBasic把全部控制权交给应用程序,可以对应用程序进行测试。在此阶段,可以查看程序代码,但无法修改。

★如果执行“运行”菜单中的“结束”命令(或单击工具条中的“结束”按钮),则可回到设计模式。

★如果执行“运行”菜单中的“中断”命令(或单击工具条中的“按钮”按钮,或按Ctrl+Break组合键),则可进入中断模式。2.执行模式(RunMode)进入中断模式后,主窗口标题栏上原来显示“[设计]”或“[运行]”的地方已被“[Break]”代替。

。在中断模式下,可以检查程序代码,并可进行修改,也可检查数据是否正确,修改完程序后,可继续执行。

可以用以下4种方式进入中断模式:1.在执行模式下,执行“运行”菜单中的“中断”命令;2.在程序中设置断点(BreakPoint),程序执行到该断点时自动进入;3.执行程序时遇到Stop语句;4.在程序执行过程中,如果出现错误,将自动进入中断模式。3.中断模式(BreakMode)在调试工具条中,有三个按钮可以在三种模式之间转换,即“启动”按钮、“中断”按钮和“结束”按钮启动中断结束设计模式执行模式中断模式二、VisualBasic的错误类型

编译错误运行错误逻辑错误语法错误应用程序中的错误一般分为四类1.语法错误(syntaxerror)

通常在语法不正确时出现这种错误。例如,丢失或错写了符号,关键字拼写不正确,有For而没有Next,有If而没有EndIf或把ElseIf写成ElseIf,以及括号不匹配等。VisualBasic具有自动语法查错功能,在设计阶段键入程序代码时就能检查出部分语法错误。例如,假定有如下代码:PrivateSubCommand1_Click()

a=100:b=200c=a+bPrintcEndSub在输入代码时,如果第二行输入为:

c=a{b

则按回车键后就会显示出错提示窗口,刚输入的一行变为红色,出错的部分高亮显示,如下图所示:在这里,出错提示的含义是:非法字符,即输入的字符(高亮显示)不符合VisualBasic语法规则,必须进行修改,否则,出错行一直显示红色。

注意:只有在设置了自动语法检查后,才会在输入代码的过程中出现语法错误提示窗口。自动语法检查通过“工具”菜单中的“选项”命令(“编辑器”选项卡)设置。2.编译错误(compileerror)

编译错误是指将程序编译成可执行文件(.exe)时,或用启动运行程序时,由于未定义变量、漏掉了某些关键字等原因而引起的错误。在这种情况下,将弹出一个窗口,显示出错信息,并使有错误的程序行高亮显示,如下图所示:从图中可以看出,产生错误的程序行为abc,VisualBasic认为这是一个过程调用,但又找不到该过程,因而产生“过程未定义”错误。这种错误不是语法错误,在输入代码时不会被语法检查发现。出现这类错误后,VisualBasic将停止编译,并回到有错误的程序代码窗口。在输入程序时,VisualBasic对输入的每行代码进行解释,发现语法错误后显示相应的信息。因此,严格地说,语法错误实际上也属于编译错误。3.运行时错误(run-timeerror)★这类错误可以使用错误处理语句捕获错误,转而执行正确的操作。

语法正确,运行时无法执行的错误叫做“运行错误”或“运行时错误”。再如除数为0,也会产生“运行错误”,终止程序执行。如:想访问一个在窗体上并不存在的控件,会产生“运行错误”。4.逻辑错误(logicalerror)与语法错误、编译错误和运行错误不同,逻辑错误一般不报告出错信息,也就是说,他既没有语法和编译错误也没有运行错误,从表面上看,一切正常,但得到的确是错误的结果。这类错误最难发现,因而也最危险。减少或克服逻辑错误,没有捷径可寻,只能靠耐心、经验以及良好的编程习惯。以下几点可供参考:

1.列出与应用程序有关的所有事件,然后考虑好如何在程序中响应这些事件,认真定义每个事件过程及通用过程;

2.在关键地方加上必要的注释;

3.注意变量名称的一致性。当变量名拼写有错误时,VisualBasic把它看成是另外一个变量。为了避免出现这类错误,可以强制变量必须显式声明(菜单“工具”-“选项”中的“编辑器”选项卡,或直接在代码通用段输入语句OptionExplicit);4.设定断点,缩小错误的查找范围;

5.中断程序的执行,检查变量的当前值。二、中断与程序跟踪

在调试过程中,常常需要在程序的某一点暂时停止执行,以便用调试工具找出错误。此外,为了查看程序的执行,需要对程序进行跟踪,以便能及时发现错误所在。1.中断执行前面提到进入中断模式的几种方法.在中断模式下,可以对程序进行修改,并可继续运行。在调试程序时,常用的中断方法有两种,即设置断点和使用Stop语句。(1)断点(BreakPoint)断点通常设置在需要程序暂停执行的地方。利用断点,可以对程序一部分一部分地进行测试,或者通过断点使运行的程序在关键的地方停住,测试一个变量地值,从而观察程序地实际执行情况。当程序遇到断点时,VisualBasic进入中断模式。断点可以在设计阶段或中断模式下设置,可以通过4种方法来设置和清除(按Ctrl+Shift+F9组合键是将断点全部清除)。(2)Stop语句用设置断点或用Stop语句都可以使程序进入中断模式,这两种方法各有特点,应合理使用。2、程序跟踪利用断点,只能粗略地查出错误发生在程序地某一部分。而用程序跟踪可以查看程序的执行顺序,找到发生错误的程序语句行。VisualBasic中的跟踪方式包括单步执行、过程单步执行和跳跃执行。(1)单步执行(singlestep)单步执行就是逐语句执行,即每次只执行一条语句。可以通过菜单“调试”中的“逐语句”命令或工具条上的“逐语句”按钮或功能键F8来实现。单步执行开始后,程序即进入执行模式。执行完一条语句后,切换到中断模式,并把下一条语句作为待执行语句,待执行语句反相显示。单步执行时系统处于中断模式,如果发现程序有错误,可以立即进行修改。此外,也可以把鼠标光标指到某个变量上,查看变量的值。可以通过菜单“调试”中的“逐过程”或工具条上的“逐过程”按钮或功能键Shift+F8来实现。(2)过程单步(procedurestep)过程单步其执行方式与单步执行基本相同,只是把被调用的过程作为一条语句,一次执行完毕。如果确信某个过程没有错误,则没有必要单步执行过程中的每个语句,在这种情况下,可以使用过程单步。(3)运行到光标处在设计阶段或中断模式时可以把光标移到代码的某一行上,然后执行“调试”菜单中的“运行到光标处”命令或按Ctrl+F8,这样,程序将会在运行到光标所在行时停止运行。用“运行到光标处”命令可以跳过大型循环。★注意:光标所在的行必须在程序的执行流程中。(4)跳跃执行

单步执行只能按顺序一条语句一条语句地执行,过程单步只能按顺序一次执行一个过程。如果想暂时避开程序地某一部分,调试其它部分,或者在对程序进行修改之后再回过头来执行,则必须通过跳跃执行来实现。

跳跃执行在中断模式下设置,2种方法:1、执行程序,进入中断模式,边界标识条中有一个箭头,指向下一个要执行的语句行。这时,可以用鼠标重新选择下一条要执行地语句,然后执行“调试”菜单中的(或按Ctrl+F9),即可把该语句行设置为“开始执行行”,边界标识条中的箭头移到这一行;2、直接拖动边界标识条中的箭头移到要执行的语句行上即可。注意:“设置下一条语句”命令只能在当前过程中使用,也就是说,要设置的下一个语句行必须在当前过程中,否则拒绝设置。在“调试”菜单中,还有一个“显示下一条语句”命令,用该命令可以把光标移到下一个将要执行的语句行。该命令也只能在中断模式下使用。三、监视窗口和监视表达式利用监视表达式,可以在程序执行的过程中显示其变量或表达式的值,并可设置在满足某个条件时程序中断。监视表达式是VisualBasic中使用的重要的调试技术。监视表达式通过“添加监视”命令来设置。执行“调试”菜单中的“添加监视”命令后,显示一个对话框,如下图所示。文本框:用来输入表达式;上下文:指定要监视的过程和模块;监视类型:用来设置监视类型,根据需要选择设置完每一项后即可激活监视窗口例1监视表达式的添加和监视类型的选择★监视表达式也可以通过“快速监视”命令添加四、立即窗口前面我们已看到,监视表达式的值可以在监视窗口中输出。监视窗口只能被动地显示变量或表达式地值,而利用立即窗口,不但可以检查变量和属性或表达式的值,而且能重新设定变量和属性的值,还可以用来测试过程。程序进入中断模式后,将自动激活“立即窗口”,如右图所示。在“立即窗口”中可以输入并执行VisualBasic语句,每个语句一行,不影响窗口中的代码。可以用下列两种方式在“立即窗口”中输出信息:(1)在程序代码窗口用Debug.Print方法;(2)直接在“立即窗口”中执行Print方法。用Print方法可以把信息输出到窗体、打印机或控件上,其一般格式为:

[对象.]Print[项目][;]

这里的“对象”可以是打印机或控件,如果省略“对象”,则为当前窗体。而Debug也是个对象。如果用它作为Print方法的对象,即

Debug.Print

[项目][;]则可把“项目”输出到“立即窗口”中例2:Debug—“立即窗口”(1)

测试字符串函数执行情况当程序执行到Debug.Print

时,会自动激活“立即窗口”例3Debug—“立即窗口”(2)五、错误处理VisualBasic中的语法错误可以在编译时查出。利用前面介绍的调试工具,可以查出运行错误或逻辑错误。尽管如此,错误仍然是无法预料和避免的。当出现运行错误时,VisualBasic会给出适当的出错信息,但这些信息很简短,通常只适合专业人员看,而且指出的错误不一定准确。为了提高软件的可靠性,VB提供了一种对错误进行“变通”处理的办法,可以在出现错误时显示适当的信息,或

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论