在Visual Basic中调试程序_第1页
在Visual Basic中调试程序_第2页
在Visual Basic中调试程序_第3页
在Visual Basic中调试程序_第4页
在Visual Basic中调试程序_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、调试Il debug1语法错误编程错误包括语法错误、运行时错误和逻辑错误。不正确地创建代码时就会出现语法错误,包括错误地输入关键字,遗漏了必要的标点符号或者不正确的结构。Visual Basic包含有【自动语法检测】选项,可以在用户编写程序时检测和更正语法错误。如果使用了这个选项,Visual Basic就会在用户输入程序时解释这个程序。当它发现错误时,就会加亮显示这个程序代码并显示一个消息框来解释原因和提供帮助。这样用户就可以在继续编程之前更正错误。2运行时错误当程序语句师徒执行一条不可能执行的操作时,就会发生运行时错误。常见的运行时错误是试图从一个不存在的文件中读取数据,另一个是试图执行被

2、零除的操作。在用户的程序中为这些错误提供出错处理函数和错误处理例程是很重要的。3逻辑错误当应用程序不能按期望的方式执行时会发生逻辑错误。这些错误是很难发现的。因为应用程序的语法完全合法,运行时也不执行非法操作,但是仍然会产生错误。这类错误通常不会产生出错消息。验证应用程序执行的唯一方法就是测试它并分析运行结果。4中断模式使用Visual Basic开发应用程序时,主要会用到两种模式:设计模式是创建和编辑程序用的,运行模式是看程序的运行效果用的。中断模式可以中止应用程序的执行。在中断模式下,可以修改应用程序的代码、确定已经被调用的活动过程,查看变量、属性和表达式的值,修改程序流程和执行Visua

3、l Basic语句。在运行程序时遇到断点、遇到Stop语句、触发了已放置的查看表达式、在程序执行时按下了控制键加暂停键、程序代码行中的语句生成了一个运行时错误,在出现的提示框中单击了【调试】,Debug. Assert语句被判断为False时,Visual Basic会进入中断模式。5设置断点断点是程序中的一个标志,它告诉Visual Basic暂停执行。如果你怀疑程序中的某个地方有问题,想要停止执行并使用调试工具,就要在那个地方设置断点。断点是临时存在的,不会保存在程序中。设置断点就是把插入点位于过程中的某一行,在这里程序的执行将会中止。在【调试】菜单上,单击【切换断点】,或按下F9键,单击

4、这行程序代码旁边的页边指示器,用鼠标右键单击这行程序代码,在快捷菜单上单击【切换】,然后选择【断点】,可以添加断点。把代码行设置为某种断点颜色,在【格式选项】中可以定义这个颜色。另外,在【调试】菜单中,单击【清除所有断点】可以清除所有断点。6使用Stop语句Stop语句与断点相似,只是它直到被删除之前,一直保留在某段程序中。在程序编译期间,Stop语句在操作上类似于End语句。乱用Stop语句会造成未知的运行时错误。7使用Debug对象的Assert方法使用Debug对象的Assert方法可以按照预先设定的条件进入中断模式。这个方法使用布尔表达式来决定是否进入中断模式。按照“Debug. As

5、sert 布尔表达式”的语法来应用Debug. Assert方法。8使用调试工具栏当程序在用户认为会发生问题的地方中止时,可以使用Visual Basic提供的扩展调试工具来检查问题。调试工具栏提供了使用最常用的调试功能的按钮。如【启动】、【中断】、【结束】、【切换断点】、【逐语句】、【逐过程】、【跳出】、【本地窗口】、【立即窗口】、【监视窗口】、【快速监视】、【调用堆栈】。9监视窗口输入监视表达式可以告诉Visual Basic监视哪个变量或表达式,以及想让Visual Basic中止程序执行的上下文提示或条件。Visual Basic会监视用户选择的表达式,当程序进入中断模式时,就会告诉用

6、户它的值。你还可以告诉Visual Basic当监视表达式之一为True或其值改变时进入中断模式。如果变量在循环结构中改变时,这个方法就特别有用。如果与快速监视功能结合使用,监视窗口就会成为检测和修改错误的一种高效工具。10添加监视表达式要添加监视表达式,打开【添加监视】对话框并指定表达式、上下文和监视类型选项。在【调试】菜单上,单击【添加监视】,在【表达式】框中,输入要判断的表达式名称,在代码编辑器中添加监视表达式,从代码编辑器中选择要监视的表达式。在【添加监视】对话框的【上下文】选项组中,设置一个范围,Visual Basic会在这个范围内监视表达式的值。在【上下文】选项组中,选择合适的过

7、程或模块名称。【监视类型】单选框中设置了Visual Basic响应监视表达式的方式。在确定了Visual Basic应该响应监视表达式的方式之后,在【监视类型】单选框中选中一个单选项,然后单击【确定】。在监视窗口中,图标会出现在每个表达式的左边,并表明表达式的类型。11编辑或删除监视表达式可以编辑或删除监视窗口中列出的任何监视表达式。在监视窗口中,选中要编辑的表达式,在【调试】菜单上,单击【编辑监视】,或按下控制键加W,就会出现【编辑监视】对话框,非常方便。这时可以在【编辑监视】对话框中修改表达式、判断变量的范围或监视类型,然后单击【确定】。如果希望删除监视表达式,在监视窗口中,选中要删除的

8、表达式并按下删除键即可。12使用快速监视如果没有定义监视表达式,而又想查看某个变量、属性或表达式的值,可以使用快速监视功能。要想继续监视这个表达式,可以把它添加到监视窗口中。在代码编辑器中,选择表达式,在调试工具栏上单击【快速监视】按钮,在【快速监视】对话框中,单击【添加】,就可以把表达式添加到监视窗口中。13从立即窗口中打印输出要测试表达式,就要打印输出它们的值,任何有效的表达式,包括涉及属性的表达式,都可以使用立即窗口来进行判断。在中断模式下,在立即窗口中直接输入Print方法,就可以打印输出到立即窗口。立即窗口的范围只限制在当前过程。在当前过程中声明的局部变量、在当前程序代码模块中声明的

9、模块变量以及全局变量,但不会显示任何超出范围的变量或属性。当程序在中断模式下时,焦点会移动到立即窗口中来检查数据。你可以使用立即窗口来判断任何有效的表达式,包括涉及属性的表达式。当前活动的窗体或模块决定了范围。如果程序在属于窗体或类的程序段暂停,你就可以无须指定窗体或类而引用窗体的属性或局部变量了。如果程序在另一个模块或窗体中暂停,你就必须显式地指明窗体名称了。问号是一个有用的表示Print方法的速记标记。问号与Print含义相同,可以用在使用了Print的任何上下文范围内。在立即窗口中检查数据的方法是在立即窗口中单击鼠标。在语句输入或粘贴到立即窗口中,然后按下回车键,这时立即窗口会执行这个语

10、句,并作出响应。14使用Debug对象的Print方法Debug对象的Print方法把输出发送到立即窗口,不进入中断模式。程序的执行不需要为了让用户得到应用程序运行情况的反馈而中止,返回信息出现在不同的地方,调试程序作为窗体的一部分保存。使用“Debug. Print 表达式列表”的语法可以在全速运行情况下跟踪变量的值。如果忽略表达式列表,就会打印一条空白行。分号使用列来分开几个值。当应用程序被编译为可执行文件时,Debug. Print语句就会被删除。但是Visual Basic不会删除作为Debug. Print参数的函数调用。函数的结果不会被打印输出时,函数的作用也会继续在编译后的可执行

11、文件中存在。15立即窗口更广泛的用途你还能以其它方式来使用立即窗口测试自己的程序。立即窗口可以设置属性和变量的值。在排除可能造成错误的原因时,有时需要测试特殊数据值的影响。立即窗口还可以用来测试过程的结果。使用立即窗口调用子过程或函数过程,可以用任意给定的参数来测试过程。按下回车键以后,Visual Basic会切换到运行模式执行依据,然后返回中断模式。立即窗口还可以用来显示错误消息。可以使用立即窗口来获得有关具体错误编号的信息。使用立即窗口来显示错误消息的方法是:在立即窗口中输入错误编号,按下回车键,这时就会出现相关错误消息。16立即窗口中的快捷方式在输入语句之后,把插入点放置在这个语句之后

12、,按回车键可以再次执行它。在按下回车键之前,可以编辑当前的语句来修改它的作用效果。可以使用鼠标或方向键在立即窗口中移动。除非在想要执行的语句上,否则不要按回车键。按下控制键加首键可以把光标移动到立即窗口的顶端,按下控制键加尾键可以把它移动到底端。按下首键可以把光标移动到当前行的行首,按下尾键可以移动到当前行的行尾。17使用本地窗口在中断模式下,可以使用的另一个调试工具是本地窗口。本地窗口显示了当前过程范围内的所有变量的值。当程序的执行从一个过程到另一个过程时,本地窗口中的内容仅仅反映用于当前过程中的变量。本地窗口有四个组成元素:【调用堆栈】按钮,表达式、值和类型。18使用调用堆栈跟踪程序流程调

13、用堆栈功能可以创建一个过程列表,通过几个活动过程调来跟踪程序的流程。活动过程调用是指应用程序中那些已经启动,还没有结束的过程,使用这个工具,可以验证过程执行顺序是否正确。一个过程可以调用第二个过程,第二个过程调用第三个过程,这些调用都是在第一个过程完成之前开始的。这样的嵌套过程调用很难跟踪。调用堆栈可以显示出这种流程。只有程序在中断模式下才可以显示调用堆栈。在调试工具栏上单击【调用堆栈】按钮,或在中断模式下按下控制键加L,可以调用调用堆栈。【调用堆栈】对话框列出了系列嵌套调用中的所有活动过程调用,把最早的活动过程调用放在了列表的底部,后面的过程调用放在了列表的顶端。为每个过程提供的信息都是以模

14、块或窗体名称开头的,后面是被调用过程的名称。因为【调用堆栈】对话框并不表明赋给窗体一个实例的变量,所以它不区分窗体或类的几个实例。可以使用【调用堆栈】对话框来显示过程中的语句,这些语句把应用程序的控制传递给了列表中的下一个过程。在【调用堆栈】对话框中选中要显示的过程调用,单击【显示】按钮,【调用堆栈】对话框就会关闭,过程出现在代码编辑器中,代码编辑器中的光标位置表明了调用【调用堆栈】对话框中下一个过程的语句。19在Mouse Down期间中断执行如果在Mouse Down事件过程期间中断执行,则可松开鼠标键或使用鼠标来做别的任务。但在继续执行时,应用程序会认为鼠标键一直是被按下的。在再次按下鼠

15、标键并松开它之前不可能获得Mouse Up事件。在运行时按下鼠标键,将会认为在Mouse Down事件过程中有一个断点,从而在这里再次中断执行。在这种情况下将再也得不到Mouse Up事件。解决的方法通常是删除Mouse Down过程中的断点。20在Key Down期间中断执行如果在Key Down期间中断执行,则可有大致相同的考虑。如果在Key Down过程中保留一个断点,则可能再也得不到Key Up事件。21在Got Focus或Lost Focus期间中断执行如果在Got Focus或Lost Focus事件过程期间中断执行,则系统消息的计时可能会产生不一致的结果。要使用Debug. P

16、rint语句代替Got Focus或Lost Focus事件过程中的断点。22模拟对话框和消息框禁止事件由于调试器中潜在的冲突问题,当显示一个模拟窗体或消息框时,开发环境将不能产生事件。这样一来,事件就被禁止,直到这个模拟窗体或消息框被释放为止。重点事件的禁止只发生在开发环境中。一旦项目编译通过后,即使显示模拟窗体或消息框时也仍旧会产生事件。一个带有定时器控件的窗体在开发环境中运行,选择【工具】菜单上的【选项】打开【选项】对话框。这个对话框是模拟对话框。定时器的Timer事件就会被禁止,直到这个对话框被释放。设计时,一个带有定时器控件的用户控制的实例被放到一个窗体上。选择【工程】菜单上的【添加

17、类模块】对话框,这个对话框是模拟对话框。定时器控件的定时器事件会被禁止,直到这个对话框被释放为止。23测试和使用命令行参数可以让应用程序使用命令行参数,在启动时,这些参数会向应用程序提供数据。用户可以选择操作环境的【运行】命令来输入它们,然后在应用程序名之后键入参数。在创建应用程序的图标时也可使用命令行参数。选择【工程】菜单里的【属性】命令,单击【工程属性】对话框的【生成】选项卡,在【命令行参数】文本框中键入示例的参数。选择【确定】。24在编译之前删除调试信息如果不想在发布给用户的应用程序中包含调试信息语句,则在使用【生成.EXE】命令时,用条件编译来删除这些语句。因为对Assert过程的调用

18、是条件编译的,所以,把f Debug设置为True,只有可执行文件才包含这个调用。25用断言检验代码断言是一种方便的方法,可以测试应该在代码中特定点出现的条件。设想一个Assert语句如同做一个假设。如果用户的假设是True,将忽略这个断言,如果你的假设是False,Visual Basic会产生动作以引起用户的注意。在Visual Basic中,断言总是以方法的形式出现:Debug对象的Assert方法,需要一个布尔类型参数,这个参数规定计算的条件。Debug. Assert语句不会出现在编译后的应用程序中,但是,在设计环境中运行时,它会使应用程序进入中断模式,并突出显示包含这条语句的代码行。26使用请求时编译请求时编译和后台编译是使应用程序在开发环境中快速运行的相关功能。在编译出整个工程的可执行文件之前,

温馨提示

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

评论

0/150

提交评论