第7章 程序调试精选文档.ppt

上传人:石*** 文档编号:87330988 上传时间:2023-04-16 格式:PPT 页数:28 大小:1.31MB
返回 下载 相关 举报
第7章 程序调试精选文档.ppt_第1页
第1页 / 共28页
第7章 程序调试精选文档.ppt_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《第7章 程序调试精选文档.ppt》由会员分享,可在线阅读,更多相关《第7章 程序调试精选文档.ppt(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第7章 程序调试本讲稿第一页,共二十八页1语法错误(Syntax Error)语法错误是由于程序代码错误引起的。例如,语句关键字拼写错误或遗漏了必要的标点符号,分支结构或循环结构语句的结构不完整或不匹配,括号不匹配等等。这一类错误出现时,VB的内部编译器会检查出来,并出现相应的语法错误提示框,提示改正错误。在VB集成开发环境中,可以设置自动语法检查功能。7.1 7.1 错误类型错误类型 本讲稿第二页,共二十八页2运行错误(Run Time Error)运行错误是指并没有出现语法错误,而是在程序的运行过程中,执行了非法操作而导致应用程序执行中断。例如,用LoadPicture装载图形文件时,若指

2、定的图形文件不存在,除法运算中除数为0等。这类错误只有在程序运行时才能被发现。出现这类错误时,系统将中止程序的运行,显示相应的信息。本讲稿第三页,共二十八页3逻辑错误(Logic Error)逻辑错误是指程序既没有语法错误也没有运行错误,而是由于程序代码未能实现预定的处理要求而导致了错误的运行结果。产生这类错误的原因很多,例如算法不正确、变量没有初始化、运算符使用不正确、循环条件错误等。减少这类错误的办法是积累编程经验,养成良好的程序设计风格,使用结构化、模块化的程序设计方法,并提高程序的可读性。这样既可以减少程序的出错概率,增加程序的可靠性和可维护性,又提高了程序的质量并且方便调试。本讲稿第

3、四页,共二十八页7.2 7.2 程序调试程序调试 7.2.1 应用程序的工作模式应用程序的工作模式 1设计模式(“设计”)用户创建应用程序的大部分工作是在设计模式下完成的。在此模式下,用户可以设计窗体、绘制控件、编写代码,并使用“属性”窗口来设置或查看属性值。此时,可以设置断点和创建监视表达式,但不能运行代码或使用调试工具。2运行模式(“运行”)应用程序运行时即进入运行模式。此时可以查看应用程序的工作状况,但不能直接修改代码。3中断模式(“Break”)中断模式,指应用程序没有运行结束而被中止。此时可以查看并修改代码、检查或修改数据,也可以选择重新启动应用程序、结束运行或从中止处继续运行。本讲

4、稿第五页,共二十八页进入中断模式的方法很多,常用的几种途径有:(1)在代码中插入Stop语句,当程序运行到该语句处就会停下来,进入中断模式。调试结束以后,再删除所有的Stop语句。Stop语句的使用格式为:Stop(2)在代码窗口中,把光标移到要设置断点的那一行,选择“调试”菜单中的“切换断点”命令(或按下快捷键F9)。(3)在代码窗口中,设置断点。见7.2.3节。(4)在程序运行时,单击工具栏上的“中断”按钮,或选择“运行”菜单中的“中断”,命令,或按Ctrl+Break键。(5)当程序运行出现错误时,也会自动切换到中断模式。本讲稿第六页,共二十八页7.2.2 7.2.2 调试工具调试工具

5、切换断点逐语句逐过程跳出本地窗口立即窗口监视窗口快速监视调用堆栈调试工具栏:专门用于程序调试 本讲稿第七页,共二十八页调试工具用 途启动启动窗体开始运行程序,初始化所有变量。中断中断程序运行,进入中断模式。结束停止程序运行,返回到设计模式。切换断点在代码窗口中确定一行,VB在该行中断程序的执行。逐语句调试执行应用程序代码的下一个可执行语句,并可跟踪到过程中。逐过程调试执行应用程序代码的下一个可执行语句,但不跟踪到过程中。跳出执行当前过程的其他部分,并在调用过程的下一行处中断执行。本地窗口显示局部变量的当前值。立即窗口当应用程序处于中断模式时,允许执行代码或查询变量值。监视窗口显示选定表达式的值

6、。快速监视当应用程序处于中断模式时,列出表达式的当前值。调用堆栈当应用程序处于中断模式时,呈现一个对话框来显示所有已被调用但尚未完成运行的过程。表7 1 调试工具的用途 本讲稿第八页,共二十八页7.2.3 7.2.3 跟踪调试跟踪调试 1切换断点 “断点”通常安排在程序代码中能反映程序执行状况的部位。VB程序一般都由若干个过程组成。在某些过程中设置断点,就可对相关的过程进行跟踪检查,从而保证程序每个组成部分的正确性。所以,在程序中设置断点,是检查并排除逻辑错误和比较复杂的运行错误的重要手段。四种设置断点的方法:(1)使用“调试”菜单中的“切换断点”命令;(2)直接单击“调试”工具栏上的“切换断

7、点”按钮;(3)用鼠标单击“代码编辑器”窗口左侧空白区;(4)是直接按功能键“F9”即可。本讲稿第九页,共二十八页2逐语句 逐语句方式就是每次执行一条语句,即单步调试。在每次执行一条语句之后,通过观察应用程序的输出及界面的变化,或通过调试窗口观察变量的变化,来分析和判断该语句是否正确,从而查找出错的原因和位置,以便进行相应的修改。选择“调试”菜单的“逐语句”命令,或者单击“调试”工具栏的“逐语句”按钮,也可以直接按F8键,就可以进入逐语句方式执行。本讲稿第十页,共二十八页3逐过程 选择“调试”菜单的“逐过程”命令,或者单击“调试”工具栏的“逐过程”按钮,也可以直接按Shift+F8键,就可以进

8、入逐过程方式执行。逐语句方式和逐过程方式的区别是:逐语句方式一次只能执行一条语句,如果当前语句是过程调用语句,则逐语句方式将进入该过程并执行该过程中的第一条语句。逐过程方式每执行一次,或是执行一条语句或是执行一个过程,这与当前语句的内容有关。如果当前语句是一条普通语句,则逐过程方式和逐语句方式是一样的;如果当前语句是一条过程调用语句,则逐过程方式是一次执行完该过程,然后回到当前过程的下一条语句。本讲稿第十一页,共二十八页4跳出 当使用逐语句方式执行,进入被调用过程以后,如果不想执行该过程的全部代码,选择“跳出”可以立即回到调用该过程的语句的下一条语句。本讲稿第十二页,共二十八页7.2.4 7.

9、2.4 使用调试窗口使用调试窗口 调试窗口是VB的重要调试工具,在逐语句运行时可用调试窗口监视表达式和变量的值。有三个调试窗口:本地窗口、立即窗口和监视窗口。1本地窗口“本地”窗口可显示当前过程所有局部变量的当前值(如图)。第一行的Me表示当前窗体,用鼠标单击Me前的加号,打开窗体中各个控件对象的属性,即可查看各个属性的当前值。本讲稿第十三页,共二十八页2立即窗口在立即窗口,可以输入可执行代码并立即执行而得到结果,如图所示。立即窗口也可以在程序进入中断模式时,显示代码中正在调试的语句所产生的信息,以便分析和发现问题。本讲稿第十四页,共二十八页在立即窗口中,有两种方法可获得程序中需要查找的参数的

10、值。(1)直接在立即窗口输入Print方法当程序进入中断模式时,可以打开立即窗口或切换到立即窗口来查看数据。键入:Print参数名参数名 或或?参数名参数名 就可获得当前程序中该参数的值。(2)在应用程序中使用Debug.Print语句Debug是VB提供的标准系统对象,通过该对象的Print方法可以将调试信息直接输出到立即窗口。例如,在例7.1的程序中就有语句:Debug.Print a(i);这样也可以不必中断程序,在应用程序运行的同时,在立即窗口观察查看的数据。除了可以在立即窗口输出变量或属性值外,也可以在立即窗口给变量或属性赋新值。本讲稿第十五页,共二十八页3监视窗口监视窗口用于查看指

11、定表达式的值。指定的表达式称为“监视表达式”。监视表达式在设计模式时设置,选择“调试”菜单中的“添加监视”命令,出现如图7.6所示对话框。在“表达式”中输入要监视的表达式或参数名,在“上下文”区域中选择参数或表达式所在的过程和模块名,然后在“监视类型”中选择:(1)监视表达式:监视表达式是否正确。(2)当监视值为真时中断:当监视表达式的值为“True”时产生中断。这时,监视表达式也称为中断表达式。(3)当监视值改变时中断:当监视表达式的值或参数的值发生变化时产生中断。为了访问监视窗口,可选定“视图”菜单中的“监视窗口”命令,或通过调试工具栏打开监视窗口,如图7.7所示。本讲稿第十六页,共二十八

12、页图7.6图7.7本讲稿第十七页,共二十八页7.3 7.3 程序调试示例程序调试示例 例7.1下面程序的功能是把一个正整数序列重新排列。新序列的排列规则是:奇数排在系列左边,偶数排在序列右边,排列时,奇、偶数依次从序列两端向序列中间排放。Option ExplicitOption Base 1Private Sub Form_Click()Dim a(10)As Integer,i As Integer,j As Integer Dim b(10)As Integer,k As Integer For i=1 To 10 a(i)=Int(Rnd*100)+1 Debug.Print a(i)

13、;Next i Debug.Print j=1:k=5For i=1 To 10 If a(i)Mod 2=0 Then b(j)=a(i)j=j+1 Else b(k)=a(i)k=k+1 End If Next i For i=1 To 10 Debug.Print b(i);Next iEnd Sub 本讲稿第十八页,共二十八页调试过程如下:1分析程序结构程序在声明部分声明了两个数组,显然数组a用于存放原序列,数组b用于存放新生成的序列。程序中采用了三个For循环,第一个For循环的功能是利用随机函数生成10个随机数,存放到a数组,作为原序列。第二个For循环的功能是对原序列重新排列。第

14、三个For循环的功能是输出排列后的新序列。2运行程序,观察初步执行结果由于程序的输出采用Debug.Print的形式,所以输出结果是在立即窗口中,如图所示。本讲稿第十九页,共二十八页3在程序中设置断点,如图所示。本讲稿第二十页,共二十八页4运行程序。程序在执行到断点时停止,此时循环只执行了一次,打开本地窗口,如图所示。本讲稿第二十一页,共二十八页7.4 7.4 错误处理错误处理7.4.1 7.4.1 错误对象(错误对象(ErrErr)Err是VB提供的用于错误捕捉的对象,可根据其属性来实现错误的捕捉和处理。1主要属性(1)Number属性本属性用于返回当前错误的错误代码,其值为整型数,范围为0

15、65535。VB可以标识80多种错误,表7 2列出了部分错误代码及其说明。本讲稿第二十二页,共二十八页 表7-2部分错误代码及其说明错误代码说明错误代码说明5无效的过程调用53找不到指定的文件6溢出57I/O设备错9下标越界61磁盘已满11除数为零68设备不可用13类型不匹配71磁盘未准备好16表达式太复杂76路径找不到35过程未定义380无效的属性值本讲稿第二十三页,共二十八页(2)Source属性返回错误产生的对象或应用程序的名称。本属性值为字符串类型,如果当前应用程序没有发生错误,则返回空字符串。(3)Description属性返回与当前错误代码相对应的错误信息描述。本属性值为字符串类型

16、。2常用方法 Clear方法本方法用于清除Err对象的当前属性值。本讲稿第二十四页,共二十八页7.4.2 7.4.2 设置错误陷阱设置错误陷阱 在应用程序代码中,使用On Error语句可以设置错误陷阱。其语法格式如下:On Error Goto标号标号|Resume Next其中,标号是以字母开头的任意字符序列,它必须与本语句处于同一过程中。本讲稿第二十五页,共二十八页设置错误陷阱有两种用法:(1)On Error Goto标号标号 通常,该语句放置在过程的开始位置。在程序运行过程中,当该语句后面的代码出错时,程序会自动跳转到标号所指定的程序行去运行。标号所指示的程序行通常为错误处理程序段的

17、开始行。(2)On Error Resume Next当程序出错时,忽略该错误,继续执行该语句的下一条语句。本讲稿第二十六页,共二十八页7.4.3 7.4.3 退出错误处理语句退出错误处理语句 当指定的错误处理完成后,应该控制程序返回到原程序中合适的位置继续执行。返回语句Resume有三种用法:(1)Resume 程序返回到出错语句处继续执行。(2)Resume Next程序返回到出错语句的下一语句。(3)Resume标号程序返回到标号处继续执行。本讲稿第二十七页,共二十八页7.4.4 7.4.4 错误处理的步骤错误处理的步骤 使用VB错误调试工具进行错误处理的基本步骤是:(1)设置错误陷阱。(2)利用错误对象(Err)记录错误的类型、出错原因等。(3)强制转移到用户自编的“错误处理程序段”的入口。(4)在“错误处理程序段”内,根据具体错误进行处理。如果有解决方法,在处理后返回原程序某处继续执行;否则,停止程序执行。例7.2错误处理程序示例。本讲稿第二十八页,共二十八页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁