程序调试与错误处理课件

上传人:痛*** 文档编号:241666054 上传时间:2024-07-14 格式:PPT 页数:31 大小:454.50KB
返回 下载 相关 举报
程序调试与错误处理课件_第1页
第1页 / 共31页
程序调试与错误处理课件_第2页
第2页 / 共31页
程序调试与错误处理课件_第3页
第3页 / 共31页
点击查看更多>>
资源描述
程序调试主要通过程序调试主要通过“调试调试调试调试”菜单菜单菜单菜单和和“调试调试调试调试”工具条工具条工具条工具条来实现。用来实现。用“调试调试”工具工具条条来调试程序比较方便。来调试程序比较方便。从菜单:视图从菜单:视图工具栏中选中工具栏中选中“调试调试”,或右击工具栏上弹出的快捷菜单中,或右击工具栏上弹出的快捷菜单中选择选择“调试调试”,就能打开,就能打开“调试调试”工具条。工具条。本地窗口立即窗口监视窗口快速监视调用堆栈启动中断结束切换断点逐语句跳出逐过程一、一、VisualBasic的三种工作模式的三种工作模式 从设计到执行,一个从设计到执行,一个Visual BasicVisual Basic应用应用程序处于三种不同的模式:程序处于三种不同的模式:即即设计设计模式、模式、执行执行模式和模式和中断中断模式。模式。1.1.设计模式设计模式(Design Mode)(Design Mode)启动启动Visual BasicVisual Basic后后,即进入即进入设计模式设计模式,在主窗口标题栏上显示在主窗口标题栏上显示“设计设计”字样。字样。建立一个应用程序的所有步骤基本上都在设计模式下完成,包括窗体设计、建建立一个应用程序的所有步骤基本上都在设计模式下完成,包括窗体设计、建立控件、编写程序代码以及利用属性窗口设置属性值或查看当前属性值等。在设计立控件、编写程序代码以及利用属性窗口设置属性值或查看当前属性值等。在设计阶段,阶段,不能执行程序,也不能使用调试工具,但可设置断点不能执行程序,也不能使用调试工具,但可设置断点。执行执行“运行运行”菜单中的菜单中的“启动启动”命令(或按命令(或按F5F5键、或单击工具条中的键、或单击工具条中的“启动启动”按钮按钮 ),即进入执行模式,此时主窗口标题栏上原来显示),即进入执行模式,此时主窗口标题栏上原来显示“设计设计”的地的地方已被方已被“运行运行”代替。代替。进入执行阶段后,进入执行阶段后,Visual Basic把全部控制权交给应用程序,可以对应用程序把全部控制权交给应用程序,可以对应用程序进行测试。在此阶段,进行测试。在此阶段,可以查看程序代码,但无法修改可以查看程序代码,但无法修改。如果执行如果执行“运行运行”菜单中的菜单中的“结束结束”命令(或命令(或单击工具条中的单击工具条中的“结束结束”按钮按钮 ),则可回到设计模式。),则可回到设计模式。如果执行如果执行“运行运行”菜单中的菜单中的“中断中断”命令(或命令(或单击工具条中的单击工具条中的“按钮按钮”按钮按钮 ,或按,或按Ctrl+BreakCtrl+Break组合键组合键),则可进入中断模式。),则可进入中断模式。2.2.执行模式执行模式(Run Mode)(Run Mode)进入中断模式后,主窗口标题栏上原来显示进入中断模式后,主窗口标题栏上原来显示“设计设计”或或“运行运行”的地方的地方已被已被“BreakBreak”代替。代替。在中断模式下,在中断模式下,可以检查程序代码,并可进行修改,也可检查数据是否正确,可以检查程序代码,并可进行修改,也可检查数据是否正确,修改完程序后,可继续执行修改完程序后,可继续执行。可以用以下可以用以下4种方式进入中断模式:种方式进入中断模式:1.1.在执行模式下在执行模式下,执行执行“运行运行”菜单中的菜单中的“中断中断”命令;命令;2.2.在程序中设置断点(在程序中设置断点(BreakPointBreakPoint),程序执行到该断点时自动进入;程序执行到该断点时自动进入;3.3.执行程序时遇到执行程序时遇到StopStop语句;语句;4.4.在程序执行过程中,如果出现错误,将自动进入中断模式。在程序执行过程中,如果出现错误,将自动进入中断模式。3.3.中断模式中断模式(Break Mode)(Break Mode)在调试工具条中,有三个按钮可以在三种模式之间转换,即在调试工具条中,有三个按钮可以在三种模式之间转换,即“启动启动”按钮、按钮、“中断中断”按钮和按钮和“结束结束”按钮按钮启动中断结束设计模式设计模式执行模式执行模式中断模式中断模式二、二、Visual Basic的错误类型的错误类型 编译错误编译错误运行错误运行错误逻辑错误逻辑错误语法错误语法错误应用程序中的错误一般分为四类应用程序中的错误一般分为四类1.1.语法错误(语法错误(syntax errorsyntax error)通常在语法不正确时出现这种错误。例如,丢失或错写了符号,关键字拼写不正通常在语法不正确时出现这种错误。例如,丢失或错写了符号,关键字拼写不正确,有确,有ForFor而没有而没有NextNext,有,有IfIf而没有而没有End IfEnd If或把或把ElseIfElseIf写成写成Else If,Else If,以及括号不匹配以及括号不匹配等。等。Visual BasicVisual Basic具有自动语法查错功能,在设计阶段键入程序代码时就能检查出部具有自动语法查错功能,在设计阶段键入程序代码时就能检查出部分语法错误。分语法错误。例如,假定有如下代码:例如,假定有如下代码:Private Sub Command1_Click()a=100:b=200 c=a+b Print cEnd Sub在输入代码时,如果第二行输入为:在输入代码时,如果第二行输入为:c=ab 则按回车键后就会显示出错提示窗口,刚则按回车键后就会显示出错提示窗口,刚输入的一行变为红色,出错的部分高亮显输入的一行变为红色,出错的部分高亮显示,如下图所示:示,如下图所示:在这里,出错提示的含义是:在这里,出错提示的含义是:非法字符,即输入的字符(高亮显非法字符,即输入的字符(高亮显示)不符合示)不符合Visual Basic语法规则,语法规则,必须进行修改,否则,出错行一直必须进行修改,否则,出错行一直显示红色。显示红色。注意:注意:只有在设置了自动语法只有在设置了自动语法检查后,才会在输入代码的过程中检查后,才会在输入代码的过程中出现语法错误提示窗口。自动语法出现语法错误提示窗口。自动语法检查通过检查通过“工具工具”菜单中的菜单中的“选项选项”命令(命令(“编辑器编辑器”选项卡)设置。选项卡)设置。2.2.编译错误编译错误(compile error)编译错误是指将程序编译成可执行文件(编译错误是指将程序编译成可执行文件(.exe)时,或用启动运行程序时,由)时,或用启动运行程序时,由于未定义变量、漏掉了某些关键字等原因而引起的错误。于未定义变量、漏掉了某些关键字等原因而引起的错误。在这种情况下,将弹出一在这种情况下,将弹出一个窗口,显示出错信息,并使有错误的程序行高亮显示,如下图所示:个窗口,显示出错信息,并使有错误的程序行高亮显示,如下图所示:从图中可以看出,产生错误的程序行从图中可以看出,产生错误的程序行为为abc,Visual Basic认为这是一个过程调认为这是一个过程调用,但又找不到该过程,因而产生用,但又找不到该过程,因而产生“过程过程未定义未定义”错误。这种错误不是语法错误,错误。这种错误不是语法错误,在输入代码时不会被语法检查发现。在输入代码时不会被语法检查发现。出现这类错误后,出现这类错误后,Visual Basic将停止将停止编译,并回到有错误的程序代码窗口。编译,并回到有错误的程序代码窗口。在输入程序时,在输入程序时,Visual Basic对输入的每行代码进行解释,发现语法错误对输入的每行代码进行解释,发现语法错误后显示相应的信息。因此,严格地说,语法错误实际上也属于编译错误。后显示相应的信息。因此,严格地说,语法错误实际上也属于编译错误。3.3.运行时错误运行时错误(run-time error)(run-time error)这类错误可以使用错误处理语句这类错误可以使用错误处理语句捕获错误,转而执行正确的操作。捕获错误,转而执行正确的操作。语法正确,运行时无法执行的错误叫做语法正确,运行时无法执行的错误叫做“运行错误运行错误”或或“运行时错误运行时错误”。再如再如除数为除数为0 0,也,也会产生会产生“运运行错误行错误”,终止,终止程序执行。程序执行。如:想访问一个在窗体上并不存如:想访问一个在窗体上并不存在的控件,会产生在的控件,会产生“运行错误运行错误”。4.4.逻辑错误(逻辑错误(logical errorlogical error)与语法错误、编译错误和运行错误不同,逻辑错误一般不报告出错信息,也就是与语法错误、编译错误和运行错误不同,逻辑错误一般不报告出错信息,也就是说,他既没有语法和编译错误也没有运行错误,从表面上看,一切正常,但得到的确说,他既没有语法和编译错误也没有运行错误,从表面上看,一切正常,但得到的确是错误的结果。这类错误最难发现,因而也最危险。减少或克服逻辑错误,没有捷径是错误的结果。这类错误最难发现,因而也最危险。减少或克服逻辑错误,没有捷径可寻,只能靠耐心、经验以及良好的编程习惯。以下几点可供参考:可寻,只能靠耐心、经验以及良好的编程习惯。以下几点可供参考:1.1.列出与应用程序有关的所有事件,然后考虑好如何在程序中响应这些列出与应用程序有关的所有事件,然后考虑好如何在程序中响应这些事件,认真定义每个事件过程及通用过程;事件,认真定义每个事件过程及通用过程;2.2.在关键地方加上必要的注释;在关键地方加上必要的注释;3.3.注意变量名称的一致性。当变量名拼写有错误时,注意变量名称的一致性。当变量名拼写有错误时,Visual BasicVisual Basic把它把它看成是另外一个变量。为了避免出现这类错误,可以强制变量必须显式声明看成是另外一个变量。为了避免出现这类错误,可以强制变量必须显式声明(菜单(菜单“工具工具”-“选项选项”中的中的“编辑器编辑器”选项卡,或直接在代码通用段输选项卡,或直接在代码通用段输入语句入语句Option ExplicitOption Explicit););4.4.设定断点,缩小错误的查找范围;设定断点,缩小错误的查找范围;5.5.中断程序的执行,检查变量的当前值。中断程序的执行,检查变量的当前值。二、中断与程序跟踪二、中断与程序跟踪 在调试过程中,常常需要在程序的某在调试过程中,常常需要在程序的某一点暂时停止执行,以便用调试工具找出一点暂时停止执行,以便用调试工具找出错误。错误。此外,为了查看程序的执行,需要对此外,为了查看程序的执行,需要对程序进行跟踪,以便能及时发现错误所在。程序进行跟踪,以便能及时发现错误所在。1.中断执行中断执行 前面提到进入中断模式的几种方法前面提到进入中断模式的几种方法.在中在中断模式下断模式下,可以对程序进行修改可以对程序进行修改,并可继续运行。并可继续运行。在调试程序时,常用的中断方法有两种,即在调试程序时,常用的中断方法有两种,即设置断点设置断点和和使用使用Stop语句语句。(1 1)断点()断点(BreakPointBreakPoint)断点通常设置在需要程序暂停执行断点通常设置在需要程序暂停执行的地方。利用断点,可以对程序一部分一的地方。利用断点,可以对程序一部分一部分地进行测试,或者通过断点使运行的部分地进行测试,或者通过断点使运行的程序在关键的地方停住,测试一个变量地程序在关键的地方停住,测试一个变量地值,从而观察程序地实际执行情况。值,从而观察程序地实际执行情况。当程序遇到断点时,当程序遇到断点时,Visual BasicVisual Basic进入中断模式。进入中断模式。断点可以在设计阶段或中断模式下设置,可以通过断点可以在设计阶段或中断模式下设置,可以通过4 4种方法来设置和清除(按种方法来设置和清除(按Ctrl+Shift+F9Ctrl+Shift+F9组合键是将断点全部清除)。组合键是将断点全部清除)。(2 2)StopStop语句语句 用用设置断点设置断点或或用用StopStop语句语句都可以使程序进入中断模式,这两种方法各有特点,都可以使程序进入中断模式,这两种方法各有特点,应合理使用。应合理使用。2、程序跟踪、程序跟踪 利用断点,只能粗略地查出错误发生在利用断点,只能粗略地查出错误发生在程序地某一部分。而用程序跟踪可以查看程程序地某一部分。而用程序跟踪可以查看程序的执行顺序,找到发生错误的程序语句行。序的执行顺序,找到发生错误的程序语句行。Visual Basic 中的跟踪方式包括中的跟踪方式包括单步执行单步执行、过过程单步执行程单步执行和和跳跃执行跳跃执行。(1)单步执行)单步执行(single step)单步执行就是逐语句执行,即每次只执行一条语句。可以通过菜单单步执行就是逐语句执行,即每次只执行一条语句。可以通过菜单“调试调试”中中的的“逐语句逐语句”命令或工具条上的命令或工具条上的“逐语句逐语句”按钮按钮 或或功能键功能键F8来实现。来实现。单步执行开始后,程序即进入单步执行开始后,程序即进入执行模式执行模式。执行完一条语句后,切。执行完一条语句后,切换到换到中断模式中断模式,并把下一条语句作,并把下一条语句作为为待执行语句待执行语句,待执行语句反相显,待执行语句反相显示。示。单步执行时系统处于中断模式,如果发现程序有错误,可以立即进行修改。此单步执行时系统处于中断模式,如果发现程序有错误,可以立即进行修改。此外,也可以把鼠标光标指到某个变量上,查看变量的值。外,也可以把鼠标光标指到某个变量上,查看变量的值。可以通过菜单可以通过菜单“调试调试”中的中的“逐过程逐过程”或工具条上的或工具条上的“逐过程逐过程”按钮按钮 或或功功能键能键Shift+F8Shift+F8来实现。来实现。(2)过程单步()过程单步(procedure step)过程单步其执行方式与单步执过程单步其执行方式与单步执行基本相同,只是把被调用的过程行基本相同,只是把被调用的过程作为一条语句,一次执行完毕。如作为一条语句,一次执行完毕。如果确信某个过程没有错误,则没有果确信某个过程没有错误,则没有必要单步执行过程中的每个语句,必要单步执行过程中的每个语句,在这种情况下,可以使用过程单步。在这种情况下,可以使用过程单步。(3)运行到光标处)运行到光标处 在设计阶段或中断模式时可以把光标在设计阶段或中断模式时可以把光标移到代码的某一行上,然后执行移到代码的某一行上,然后执行“调试调试”菜单中的菜单中的“运行到光标处运行到光标处运行到光标处运行到光标处”命令或按命令或按Ctrl+F8Ctrl+F8,这样,程序将会在运行到光标这样,程序将会在运行到光标所在行时停止运行。用所在行时停止运行。用“运行到光标处运行到光标处运行到光标处运行到光标处”命令可以跳过大型循环。命令可以跳过大型循环。注意:光标所在的行必须在程序的执行流程中。注意:光标所在的行必须在程序的执行流程中。(4)跳跃执行)跳跃执行 单步执行单步执行只能按顺序一条语句一条语句地执行,只能按顺序一条语句一条语句地执行,过程单步过程单步只能按顺序一次执行只能按顺序一次执行一个过程。如果想暂时避开程序地某一部分,调试其它部分,或者在对程序进行修一个过程。如果想暂时避开程序地某一部分,调试其它部分,或者在对程序进行修改之后再回过头来执行,则必须通过改之后再回过头来执行,则必须通过跳跃执行跳跃执行跳跃执行跳跃执行来实现。来实现。跳跃执行跳跃执行跳跃执行跳跃执行在中断模式下设置,在中断模式下设置,2 2种方法:种方法:1 1、执行程序,进入中断模式,边界标识条中有一个箭头,指向下一个、执行程序,进入中断模式,边界标识条中有一个箭头,指向下一个要执行的语句行。这时,可以用鼠标重新选择下一条要执行地语句,然后执要执行的语句行。这时,可以用鼠标重新选择下一条要执行地语句,然后执行行 “调试调试”菜单中的(或按菜单中的(或按Ctrl+F9Ctrl+F9),即可把该语句行设置为),即可把该语句行设置为“开始执行开始执行行行”,边界标识条中的箭头移到这一行;,边界标识条中的箭头移到这一行;2 2、直接拖动边界标识条中的箭头移到要执行的语句行上即可。、直接拖动边界标识条中的箭头移到要执行的语句行上即可。注意:注意:“设置下一条语句设置下一条语句”命令只能在当前过程中使用,也就是说,命令只能在当前过程中使用,也就是说,要设置的下一个语句行必须在当前过程中,否则拒绝设置。要设置的下一个语句行必须在当前过程中,否则拒绝设置。在在“调试调试”菜单中,还有一个菜单中,还有一个“显示下一条语句显示下一条语句”命令,用该命令可以命令,用该命令可以把光标移到下一个将要执行的语句行。该命令也只能在中断模式下使用。把光标移到下一个将要执行的语句行。该命令也只能在中断模式下使用。三、监视窗口和监视表达式三、监视窗口和监视表达式 利用利用监视表达式监视表达式监视表达式监视表达式,可以在程序执行的过程中显示其变量或表达式的值,并可设置,可以在程序执行的过程中显示其变量或表达式的值,并可设置在满足某个条件时程序中断。在满足某个条件时程序中断。监视表达式是监视表达式是Visual Basic中使用的重要的调试技术。中使用的重要的调试技术。监视表达式通过监视表达式通过“添加监视添加监视”命令来设置。执行命令来设置。执行“调试调试”菜单中的菜单中的“添加监视添加监视”命令后,显示一个对话框,如下图所示。命令后,显示一个对话框,如下图所示。文本框文本框:用来输入表达式;:用来输入表达式;上下文上下文:指定要监视的过程和模块;:指定要监视的过程和模块;监视类型监视类型:用来设置监视类型,根据需:用来设置监视类型,根据需要选择要选择 设置完每一项后即可激活监视窗口设置完每一项后即可激活监视窗口例例1 监视表达式的添加和监视类型的选择监视表达式的添加和监视类型的选择监视表达式也可以通过监视表达式也可以通过“快速监视快速监视”命令添加命令添加四、立即窗口四、立即窗口 前面我们已看到,监视表达式的值可以在监视窗口中输出。监视窗口只能被动地前面我们已看到,监视表达式的值可以在监视窗口中输出。监视窗口只能被动地显示变量或表达式地值,而利用立即窗口,不但可以检查变量和属性或表达式的值,显示变量或表达式地值,而利用立即窗口,不但可以检查变量和属性或表达式的值,而且能重新设定变量和属性的值,还可以用来测试过程。而且能重新设定变量和属性的值,还可以用来测试过程。程序进入中断模式后,将自动激程序进入中断模式后,将自动激活活“立即窗口立即窗口”,如右图所示。,如右图所示。在在“立即窗口立即窗口”中可以输入并执行中可以输入并执行Visual BasicVisual Basic语句,每个语句一行,不影响语句,每个语句一行,不影响窗口中的代码。窗口中的代码。可以用下列两种方式在可以用下列两种方式在“立即窗口立即窗口”中输出信息:中输出信息:(1)在程序代码窗口用)在程序代码窗口用Debug.Print方法;方法;(2)直接在)直接在“立即窗口立即窗口”中执行中执行Print方法。方法。用用PrintPrint方法可以把信息输出到窗体、打印机或控件上,其一般格式为:方法可以把信息输出到窗体、打印机或控件上,其一般格式为:对象对象.PrintPrint 项目项目;这里的这里的“对象对象”可以是打印机或控件,如果省略可以是打印机或控件,如果省略“对象对象”,则为当前窗体。而,则为当前窗体。而DebugDebug也是个对象。如果用它作为也是个对象。如果用它作为PrintPrint方法的对象,即方法的对象,即 DebugDebug.PrintPrint 项目项目;则可把则可把“项目项目”输出到输出到“立即窗口立即窗口”中中例例2:Debug“立即窗口立即窗口”(1)测试字符串函数执行情况测试字符串函数执行情况当程序执行到当程序执行到Debug.PrintDebug.Print 时,会自时,会自动激活动激活“立即窗口立即窗口”例例3 Debug“立即窗口立即窗口”(2)五、错误处理五、错误处理 Visual Basic Visual Basic中的语法错误可以在编译时查出。中的语法错误可以在编译时查出。利用前面介绍的调试工具,可以查出运行错误或逻利用前面介绍的调试工具,可以查出运行错误或逻辑错误。尽管如此,错误仍然是无法预料和避免的。辑错误。尽管如此,错误仍然是无法预料和避免的。当出现运行错误时,当出现运行错误时,Visual BasicVisual Basic会给出适当会给出适当的出错信息,但这些信息很简短,通常只适合专业的出错信息,但这些信息很简短,通常只适合专业人员看,而且指出的错误不一定准确。为了提高软人员看,而且指出的错误不一定准确。为了提高软件的可靠性,件的可靠性,VBVB提供了一种对错误进行提供了一种对错误进行“变通变通”处处理的办法,可以在出现错误时显示适当的信息,或理的办法,可以在出现错误时显示适当的信息,或者让程序本身修正错误。者让程序本身修正错误。格式:格式:On Error On Error GoTOGoTO 行号行号|行标号行标号 例如:例如:On Error On Error GoToGoTo 100 100 On Error On Error GoToGoTo ErrorMassageErrorMassage On Error On Error GoToGoTo 0 0 取消设置好的错误陷阱取消设置好的错误陷阱 所谓错误处理,就是在程序中插入一些语句对所谓错误处理,就是在程序中插入一些语句对运行时出现的错误做出响应。当发生错误时,程序运行时出现的错误做出响应。当发生错误时,程序应能捕捉到错误,并进行相应的处理。应能捕捉到错误,并进行相应的处理。在程序中捕捉和处理错误的步骤是:在程序中捕捉和处理错误的步骤是:1 1、设置错误陷阱、设置错误陷阱(trap)trap)2 2、编写错误处理子程序、编写错误处理子程序3 3、从错误处理子程序返回,恢复原程序的执行、从错误处理子程序返回,恢复原程序的执行格式格式1 1:ResumeResume格式格式2 2:Resume NextResume Next格式格式3 3:Resume Resume 行号行号|行标号行标号 例如:例如:六、六、ErrErr对象对象 ErrErr是是Visual Basic Visual Basic 中的一个对象,在中的一个对象,在ErrErr对象中对象中含有运行时错误的信息,也就是说,在发生运行错误含有运行时错误的信息,也就是说,在发生运行错误后,与错误有关的信息都保存在后,与错误有关的信息都保存在ErrErr对象中,因此如果对象中,因此如果在执行应用程序时产生了错误,可以查看在执行应用程序时产生了错误,可以查看ErrErr对象的属对象的属性确定产生错误的原因。性确定产生错误的原因。主要属性:主要属性:number number:数值型,可以是任何有效的错误号(数值型,可以是任何有效的错误号(0 06553565535)source source:指明最初生成错误的对象或应用程序的名称指明最初生成错误的对象或应用程序的名称description description:字符串型,与错误号相关联的描述性字符串字符串型,与错误号相关联的描述性字符串
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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