第10章 程序调试和错误处理
程序调试和错误解决的方法与技巧

程序调试和错误解决的方法与技巧程序调试是软件开发中不可或缺的一个环节,它可以帮助开发者发现和解决程序中的bug和错误,确保程序的质量和稳定性。
程序调试需要一定的方法和技巧,本文将就程序调试和错误解决的方法与技巧进行详细介绍。
一、程序调试的重要性程序调试是软件开发中的一个非常重要的环节,它决定了最终产品的质量和稳定性。
程序中的bug和错误可能会导致程序崩溃或者产生不正确的结果,从而影响用户体验和产品的形象。
因此,及时发现和解决bug和错误对于保证软件的质量至关重要。
二、程序调试的方法1.打印调试打印调试是最简单有效的调试方法之一。
开发者可以在程序中加入一些打印语句,输出程序的执行状态和关键变量的数值。
通过打印调试可以很快发现程序中的问题,具有较高的实时性。
但是打印调试可能会导致程序输出过多的信息,不便于分析和定位问题。
2.断点调试断点调试是一种比较直观的调试方法。
开发者可以在程序中设置断点,当程序执行到断点处时就会停下来,可以查看程序的当前状态和变量的数值。
通过断点调试可以更加清晰地观察程序的执行流程和变量的变化,有助于快速定位问题。
但是断点调试需要开发者花费较多的时间和精力来设置和管理断点,对程序的运行速度有一定的影响。
3.单步调试单步调试是一种逐行执行程序的调试方法。
开发者可以一步一步地执行程序,观察每一步的执行结果和变量的变化。
通过单步调试可以清晰地了解程序的执行流程,及时发现和解决问题。
但是单步调试需要开发者花费较多的时间和精力,不适用于大规模的代码调试。
4.异常捕获异常捕获是一种通过捕获程序抛出的异常来进行调试的方法。
开发者可以在程序中加入异常处理的代码,当程序出现异常时就可以捕获异常并进行相应的处理。
通过异常捕获可以很快地发现程序中的问题,有助于保证程序的稳定性。
但是异常捕获需要开发者对程序的执行流程有一定的了解,不适用于对程序整体的调试。
5.使用调试工具调试工具是一些专门用来辅助程序调试的软件,如IDE中的调试器、代码覆盖率工具、检查内存泄漏的工具等。
01 程序调试与错误处理

语义错误
程序源代码的语法正确而语 义或意思与程序开发人员本义不 同时,就是语义错误。此类错误 比较难以察觉,它通常在程序运 行过程中出现。语义错误会导致 程序非正常终止。例如,在将数 据信息绑定到表格控件时,经常 会出现“未将对象引用设置到对 象的实例中”错误,此类语义错 误在程序运行时将会被调试器以 异常的形式告诉程序开发人员。
异常处理语句
调试异常是开发功能强健的应用程序的重要一步。若要调试 未处理的异常,需要确保调试器能够在发生这些异常时停止。
在可能引发异常的代码周围使用try…catch…finally块。例如,如果应用程序调 用XML Web Services或直接调用SQL Server,则应该将该代码置于try…catch块中 因为此过程中可能会发生大量异常。 catch和finally一起使用的常见方式是:在try块中获取并使用资源,在catch块 中处理异常情况,并在x关联。
在IIS中该网站没有配置为应用程序。 在尝试调试Web应用程序时,Debug谓词没有与ISAPI扩展名关联。 2.IIS管理服务没有响应 当IIS管理服务没有响应时,会发生“安全检查失败,因为IIS管理服务没有响应”错误,这通常表示 IIS的安装有问题。 解决此错误的方法如下: 使用“管理工具”中的“服务工具”验证该服务是否正在运行。 按照以下方法进行操作。
调试与错误处理
本讲大纲:
1、错 误 类 型 2、 程 序 调 试
3、错 误 处 理
错误类型
1、语法错误 2、语义错误 3、逻辑错误
语法错误
语法错误是一种程序错误,它会影响编译器完成工作,也是最简单 的错误,几乎所有的 语法错误都能被 编译器或解 释器发现,并将错误消 息显示出来提醒程序开发人员。 在Visual Studio中遇到语法错误时,错误消息将显示在“错误列表” 窗口中。这些消息将会告诉程序 开发人员语法错误的位置(行、列和文 件),并给出错误的简要说明。
程序调试和错误处理

hshttbpe:/k/winwgwhd.s8hgboekhidn8g8.cgomoehmttgpc://1w8w9w28.h8dh8zgpo5.c8o0myjhotetmp:/o/wemwwdg.hxdc8d8ngpox.csokmfjk hotetmhpt:d/t/gpw:z/w/hwwown.owget.meszhgcbcey.ckaoinnmjgig.hcztotzmpg:-/nh/wsttkwpsw:/k/w.1f-w8zr9w2y.g8hc8do.8cogopome.crhostmktpfh-:z/t/twtpnw:s//wkw-.zwhtzwfpa.5hg8d-z08t.8czgohomo.ncgotmezc
主编 柳青 严健武
中国水利水电出版社
hshttbpe:/k/winwgwhd.s8hgboekhidn8g8.cgomoehmttgpc://1w8w9w28.h8dh8zgpo5.c8o0myjhotetmp:/o/wemwwdg.hxdc8d8ngpox.csokmfjk hotetmhspht:d/tb/gpwe:z/wk/hwickhaoidnnm8jgi8g.hcgztotzmpgo:-/enh/wmsttkwgpcsw:/k/1w.1f8-w8z9r9w22y8.g8h8c8dho.8czogoppom5e.c8rho0stmktypfjh-o:z/te/twtmpnw:s/o/wkwe-.zmwhtzwdfpag.5hgx8d-zc08td.8czngohpomox.ncsgoktmfejzkc
Basic程序设计(第二版) hhhhhhhhhhn1tttttttttt8ttttttttttn9hhhhhhhhhhpppppppppp-2ztttttttttt:::::::::://////////ttttttttttt8//////////hhhhhhhhhhppppppppppwwwwwwwwww71tttttttttt:::::::::://////////wwwwwwwwww8tttttttttto//////////ppppppppppwwwwwwwwww9wwwwwwwwwwe::::::::::2//////////wwwwwwwwwwm//////////..........8wwwwwwwwwwysyy1d0otfwwwwwwwwwwafo6jkag8g7ewwwwwwwwwwyogp..........fnc9x5mxoysyf1d0oyejwwwwwwwwww-bajok2c9nzjkagce8g7emiforggto...........8pmxycfndm 9x5micsoysyf1d0y.ejg-.zp.6xracjokn2c9zchjkgaoce8g7zm i.tgfhoe..gogtoc.p8pm.yonbfcmom 9x5cccctc.serjm-.zpo.x6xcmeojnkm2c9ooz.cocz.jomi.gcemc..9ohgtkoce.8pmm oz.ttomh.mtcshhtemc..ohtcpxhm mt.ogtmccmtth.copttroohmptho:ctpctm.hoo.ttht/tom:hctppmtc:hht/mppd:o/httphm mwp/tt//mttobh:/opttt/w::nhmtptw/:tpt:wh//ptthm/rt/pwtm:/ht//ptw:hh/pp://wwwittphd:wp/twwt://wgth:/p/tttw/w/::tpw/:t/wght:w/h//wwwptth/wt/pww:/wwt//wpw:/ppx/t/.wwwttw:p/twww:/wo.wwt:/p/wtww./w::cwn.zw/w/:p/o//wwwejp/www:./ww//whpnew..w//z.wwww:.em:xxwww/o/.lwwoxx/swgww.ww./zcm/g2cxcho.xzxc/nmomns-txc.hgx8to8f.8zo1cotmc..ockpme-.ochcxtt.pgm.ch8zmc8.mochchmo.xptzcmotnutxo.tc.ho8pmoctohtctmc.:.tomhn..oc/hchtttpm.h:hpmcc.mto/ohcm/ppttcwcmotntt:/htt:hoompmtw/tohtt:p:/htotm/htp///hwhttpmmph:whpmptw//:tihm//wpttww:/ttt:/h-:tpt:/:/wptw/tpwh/tt:p/w/wt/t/hh/wtp//:wwwht/pp:wwhppxt/w/w:t./wpwttw:/w/wtts:/:pt.:w:/ww/wttw/w/wt:pz/w/0w/wtj//wpp.//:ww/p.ww9whpw/x/ww:.w.7nwwww::/w/wsws:3.wo://ww/c.5w/swzw//w/wwk.j/dw.ww..w/n.wdx9.wkh9xwc1w.wnfnwgwwwsw.gnu3.--omwwwcn8h.swtzzzxwwk.dt.pn..n.nwdx.9kzhrtxc1e.wwcnzfngwxcsw...gp-nu2--ocn8zcch.dsztzzxlk...hdt5pn.8nnccdxh.9tkooznrt1ecfnig8.xc7..gp.-znoud2-m cmocoxoomomom.mmmcmom htthpt:/t/pw:/w/www.twop.obermigfhyt.nceosms.hctotmp:/h/wttwp:w//w.jnwxwrt..ocrotm-zch.tctopm:/// /
计算机编程技巧的代码调试和错误处理

计算机编程技巧的代码调试和错误处理代码调试和错误处理是计算机编程过程中不可或缺的一部分。
无论是初学者还是经验丰富的程序员,在编写代码时都难免会遇到各种各样的错误。
本文将介绍一些常见的代码调试技巧和错误处理方法,希望能够帮助读者更好地解决代码中的问题。
一、调试工具的使用在代码调试过程中,合理利用调试工具是非常重要的。
调试工具能够帮助我们定位代码中的错误并提供相关的调试信息。
常见的调试工具有断点调试器和日志记录工具。
1. 断点调试器断点调试器是一种常用的调试工具,可以让我们在程序执行过程中暂停代码的执行。
通过设置断点,我们可以逐步执行代码并观察变量的值,从而找到代码中的问题所在。
在调试过程中,我们可以使用断点调试器来跟踪代码的执行流程,查看变量的值以及调用栈的状态。
2. 日志记录工具日志记录工具可以将程序运行过程中的关键信息记录下来,以便后续的分析和调试。
通过在代码中添加日志语句,我们可以输出变量的值、函数的调用顺序以及程序的执行路径等信息。
在调试过程中,我们可以根据日志信息来查找错误的原因,并逐步排除问题。
二、常见的错误类型及处理方法1. 语法错误语法错误是编程中最常见的错误之一,它通常是由于拼写错误、缺少分号或者括号不匹配等原因导致的。
要解决语法错误,我们可以先检查代码中的拼写和标点符号是否正确,并使用编程编辑器的语法检查工具来帮助我们找出错误的位置。
2. 逻辑错误逻辑错误是指代码在逻辑上存在问题,导致程序的输出结果与预期不符。
要解决逻辑错误,我们可以使用调试工具来逐步执行代码并检查变量的值。
同时,我们还可以通过输出中间结果来进行调试,以便更好地理解代码的执行过程。
3. 运行时错误运行时错误是在程序运行过程中发生的错误,比如数组越界、除零错误等。
要解决运行时错误,我们可以使用调试工具来捕获错误的堆栈信息,并查看程序执行路径。
同时,我们还可以使用条件断点来跟踪错误的发生条件,以便更好地定位问题的根源。
计算机程序调试和错误处理

正常模式下的调试
正常模式指的是不会影响程序的正常运行。
1,在VS中我们使用Console.Write(或者WriteLine)方法向控 制台输出变量的值,通过这个我们可以查看变量的值是否符 合我们的预期来调试错误。
2,在Unity中我们使用Debug.Log("") Debug.LogError("") Debug.LogWarn(""),向unity的Console窗口输出信息, 帮助我们调试错误。
单步执行代码
在中断模式下我们可以单步执行代码,单步执行带有有两种 逐过程和逐 语句,他们两个都是一条语句一去执行。
错误处理(异常处理)
我们上面讨论了再开发过程中如何查找和修正错误,使这些错误不会再 发布的代码中出现,但有时,我们知道可能会有错误发生,但不能 100%的肯定他们不会发生,此时最好能预料到错误的发生,编写足够 健壮的代码以处理这些错误,而不必中断程序的执行。
窗口 Breakpoints
我们可以通过 (调试-窗口-断点),打开断点窗口,这个窗口显示了当前 项目中添加了的所有的断点,我们可以在这里定位断点的位置,也可以 去删除断点。
监视变量的内容
在中断模式下查看变量值最简单的方式,就是把鼠标指向源代码中的变 量名,此时会出现一个工具提示,显示该变量的信息。
中断模式下的调试
中断模式指我们可以暂停程序的执行,然后查看程序中的状态,也可以让程序继续执 行。
如何让程序中断? 断点
断点是什么? 断点是源代码中自动进入中断模式的一个标记,当遇到断点的时候,程序会进入中断 模式。
如何插入断点? 1,右击代码行,选择breakpoint(断点) -> insert breakpoint(插入断点) 2,光标定位到代码行,选择菜单上的Debug(调试)->Toggle Breakpoint(切换断点) 3,光标定位到代码行,按下F9键,在此按下F9是取消断点 4,在需要添加断点的行首位置,直接单击,再次单击取消断点
程序调试和常见错误PPT学习教案

第9页/共12页
12.2 C程序常见错误分析
5.运行错误 (1)输入的数据不符合要求。 (2)误认为形参值的改变会影响实参的值。 (3)使用文件时打开方式与使用情况不匹配。 (4)在有参的宏替换文本中,参数末加“()”, 引发运算顺序的不当。
第3页/共12页
12.1 程序调试
(3)运行程序。在改正语法错误和警告后,程序经过连 接时,就得到可执行的目标程序,也可能又出现了错误。 (4)结果测试。数据比较复杂,难以立即判断结果是否 正确。可以事先考虑好一批“试验数据”,输入这些数据 可以得出容易判断正确与否的结果。
第4页/共12页
12.1 程序调试
2.调试C程序的常用方法 (1)输出中间结果。 (2)注释语句和条件编译。将部分可能出现问题的语句 改成注释方式,然后调试程序,若能够得到正确的结果, 则要排除错误可能就在改成注释的部分语句中。 (3)单步运行。 (4)设置断点方法。
第5页/共12页
12.2 C程序常见错误分析
1. 输入错误 (1) 在输入数据的scanf函数中忘记使用变量的地址符。 (2)误把赋值号“=”作为等于号“= =”运算符。 (3)在用标识符时,忘记了大写字母和小写字母的区别。 (4)在不该加分号的地方加了分号。 (5)语句漏分号。 (6)对循环体中应该有花括号的复合语句,忘记加花括号。 (7)定界符号不匹配。 (8)常用符号输入错误。
提示出错的类型并非绝对准确由于出错的情况繁多而且各种错误互有关联因此要善于分析找出真正的错误而不要只从字面意义上死抠出错信息
程序调试和错误解决的方法与技巧
程序调试和错误解决的方法与技巧在软件开发过程中,程序调试和错误解决是一个非常重要的环节。
无论是在开发阶段还是在产品上线后,都有可能出现各种各样的bug和错误。
程序调试和错误解决的方法与技巧对于开发人员来说非常重要。
本文将从程序调试的基本概念开始,进一步介绍调试的常用工具和技巧,以及一些常见的错误解决方法。
程序调试的基本概念程序调试是指在软件开发过程中,通过对程序进行分析和运行来排查错误,并逐步修复这些错误的过程。
程序调试是软件开发过程中的一个重要环节,它能够帮助开发人员定位和解决各种bug和错误,提高开发效率和软件质量。
程序调试的步骤和方法因人而异,但一般来说,程序调试的基本步骤包括以下几个方面:1.准备工作:了解程序的基本逻辑和结构,明确程序的运行环境和所需的工具。
2.定位问题:根据用户的反馈和自己的观察,确定程序出现错误的地方。
3.分析问题:对出现错误的地方进行仔细分析,找出可能的原因。
4.修复问题:根据分析的结果,逐步修复错误,重新测试程序,直到问题解决为止。
常用的调试工具和技巧在程序调试的过程中,有许多工具和技巧可以帮助开发人员更快速和更有效地定位和解决问题。
下面我们来了解一些常用的调试工具和技巧。
1.调试器:调试器是程序员的得力工具之一,它可以帮助开发人员逐步执行程序,并实时查看程序的状态和变量的值,帮助开发人员更好地理解程序的运行过程。
2.日志输出:在程序中添加日志输出是程序调试的一种有效方法。
通过在程序中添加一些输出语句,可以帮助开发人员了解程序的具体执行过程,进而定位问题。
3.单元测试:单元测试是一种通过测试单个模块或函数来验证其正确性的方法。
通过编写单元测试,可以帮助开发人员发现程序中的潜在问题,从而提高程序的稳定性和可靠性。
4.隔离法:在程序调试的过程中,有时候会遇到复杂的问题,这时可以通过隔离法逐步剔除可能的原因,找到出问题的具体原因。
常见的错误解决方法程序调试和错误解决是一个复杂而繁琐的过程,有许多不同的错误解决方法可供选择。
程序调试与错误处理PPT课件
7.2 错误的捕获
• 使用Try…Catch来进行异常处理
7
第7页/共20页
7.2 错误的捕获
例:使用Tr y…Catch…Finally 来处理运行时数组索引值超出界限外的错误。
8
第8页/共20页
7.2 错误的捕获
例:求n!。不同异常处理会有不同错误信息。
9
第9页/共20页
7.2 错误的捕获
• 自定义异常处理:
• 遇到特殊错误,系统并没有提供此 种判断,自己也可以写程序来处理 特殊错误,Throw语句即可指到该 异常类,即自定义异常类。
10
第10页/共20页
7.2 错误的捕获
例:使用ArgumentOutOfRangeException 类。若输入月份1~12,不发生错误;若输 入其它数字,结果显示“不合理月份”。
17
第17页/共20页
7.3 代码的调试
18
第18页/共20页
End of Chapter
第19页/共20页
感谢您的观看!
第七章 程序调试与错误处理
20
第20页/共20页
11
第11页/共20页
7.3 代码的调试
• 设置断点
• 单击任何代码行左侧的灰色区域,或者右击代码行,再选择[插入断点]; • 随后出现一个红色圆点,断点已经设置成功; • 程序执行时,会在断点位置中断; • 选择[调试] | [启动]开始调试过程。
12
第12页/共20页
7.3 代码的调试
• 启用调试器
4
第4页/共20页
7.2 错误的捕获
• Exception类
类别
ArgumentOutOfRangeException
程序调试与错误处理
程 序 调 试 与 错 误 处 理
3. 运行时错误 是由于程序在运行过程中, 是由于程序在运行过程中,由不可预料的原 因导致的错误(例外),例如输入非法数据, ),例如输入非法数据 因导致的错误(例外),例如输入非法数据,要 读到的数据或文件被意外删除等. 读到的数据或文件被意外删除等. 表现: 表现: 运行时错误可能在程序交付使用很久以后才 被发现,然后再对程序进行完善维护(维护阶 被发现,然后再对程序进行完善维护(维护阶 段)! VB能捕获大多数运行时错误,产生错误时 能捕获大多数运行时错误, 能捕获大多数运行时错误 VB将中止应用程序,并显示尽可能准确的错误信 将中止应用程序, 将中止应用程序 息!
8
程 序 调 试 与 错 误 处 理
g. 监视窗口:显示选定表达式的值; 监视窗口:显示选定表达式的值; h. 快速监视:当程序处于中断时,列出表达式的当前 快速监视:当程序处于中断时, 值 i. 调用堆栈:当程序处于中断模式时,; 调用堆栈:当程序处于中断模式时,;
9
�
2
一 错误类型 程 序 调 试 与 错 误 处 理 VB程序错误可以分为三种: 程序错误可以分为三种: 程序错误可以分为三种 1. 编译错误 编译错误是由于违反VB的语法而产生的错误 的语法而产生的错误, 编译错误是由于违反 的语法而产生的错误, 也叫做语法错误. 也叫做语法错误. 例如: 例如: 关键字拼写错误, 关键字拼写错误,块控制结构不完整或不匹 错用未定义的对象名称等; 配,错用未定义的对象名称等; VB IDE在编程时提供了"自动语法检测", 时提供了" 在编程时提供了 自动语法检测" 当程序员每输入一行代码后( 当程序员每输入一行代码后(按回车或移动光标 到其他行), 会自动检测并给出提示; ),VB会自动检测并给出提示 到其他行), 会自动检测并给出提示;在编译 时会检测所有漏掉的语法错误. 时会检测所有漏掉的语法错误. 3
第10章程序调试与错误处理-PPT文档资料
10.1 VB程序错误的类型
编译错误在 Visual Basic编译应用程序或启动运行 时就会自动检测到。这需要设置系统的“自动语法检测” 功能。设置方法:“工具”菜单→“选项”→“编辑 器”→“自动语法检测”。程序员可根据编译错误提示去 改正错误。 例10.1 编译错误示例。如下图所示,程序中的循环结 构For-Next与选择结构if-End If交叉,运行时产生编译错 误。
10.2 程序调试
10.2.2 调试窗口 在中断模式下,可用鼠标指向要观察的变量或对象属 性,以直接显示其值,另外通过立即窗口、本地窗口、监 视窗口和调用栈窗口等,可以监视程序运行过程中变量的 变化情况。 1)立即窗口 主要用于查看变量的值。 立即窗口使用的主要方式有: (1) Debug.Print [输出列表] 在程序代码中,使用DEBUG.PRINT方法,可以将输出 列表中的各项值输出到立即窗口中。 (2)立即窗口中使用Print或?语句 在立即窗口中使用Print或?语句,显示变量或对象在运行时,当一个语句执行一个不能执行 的操作,就会发生运行时错误。 例如语句:Speed = Miles / Hours 语句本身的语法无错误,但变量 Hours 的值若为零,除 法就是无效操作,这种错误,必须运行应用程序才能检测 到。 3)逻辑错误 逻辑错误导致应用程序不按预期方式执行 。从语法 角度来看,应用程序的代码是有效的,在运行时也没有无 效操作,但产生了不正确的结果。这是因为代码中存在逻 辑上的缺陷而引起的。系统不能检测出逻辑错误,只有通 过测试应用程序和分析产生的结果才能检验出来。
10.1 VB程序错误的类型
10.1 VB程序错误的类型 VB程序出现的错误可分为三大类:编译错误、运行错误 和逻辑错误。 1)编译错误 编译错误是由于编程人员未能正确构造程序代码而产生的 错误。编译错误主要包括语法错误和结构错误。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2015/11/25
清华大学出版社
15
(3)按F8键以逐语句方式运行程序,此时,程序转入到sum过 程执行,注意各监测表达式的值的变化情况,如下图所示。
(4)当以逐语句方式运行程序到sum过程的“End Sub”语句处时, 我们发现变量c的值变为15,而与之对应的实参数z变量的值并没有 变化。
2015/11/25
2015/11/25
清华大学出版社
7
2.跟踪程序运行
逐语句执行 在调试工具栏上有一个单步执行程序的按钮。单击该按钮可以单步执行 程序。也可以用热键F8来实现单步执行程序,或者在【调试】菜单上选 取【逐语句】选项。 逐过程执行 “逐过程执行” 是把被调用的过程视为一个基本单位来执行,然后转回 到当前过程的下一语句。操作方法:单击“调试”工具栏上的“逐过程”按钮。 也可以用组合键Shift+F8或“调试”菜单上的“逐过程”选项。 跳出 当使用逐语句方式进入到一个过程中,如果确认该过程的语句绝对没有 问题,可以单击【调试】工具栏的【跳出】按钮或按下快捷键 Ctrl+Shift+F8,从当前过程中跳出,去执行过程调用者的下一条语句。
第10章 程序调试和错误处理
10.1 VB程序的错误类型 10.2 VB程序的工作模式
10.3 程序调试
10.4 错误捕获及处理
2015/11/25
清华大学出版社
1
【目的要求】 1.理解程序的错误类型; 2.掌握VB提供的常用调试工具的使用3. 3.掌握错误的捕获与处理方法 ;
【重点】
错误的捕获与处理方法 ;
2015/11/25
清华大学出版社
8
运行到光标处 在对程序进行跟踪时,想略过不感兴趣的部分代码(如次数很 多循环语句),这时可以把光标设置在需要停止运行的代码上, 然后按下快捷键Ctrl+F8或选择【调试试窗口 在上面的方法中我们只通过设置断点和跟踪程序运行这两步, 就已经检查出程序的错误了。对于较复杂的程序的调试,需要使用 VB提供的调试窗口来完成。调试窗口主要包括立即窗口、本地窗 口、监视窗口等。
定义sum过程:形参数a,b表示闭区间的上下限,参数c用于向主程 序传递运算的最终结果。三个参数的传递方式都是按数值传递。 Sub sum (ByVal a %, ByVal b %, ByVal c As Integer) Dim i As Integer 运行程序,分别在文本框Text1和Text2内输入1 Dim s As Integer 和5;单击【计算】,我们注意到在Text3内显 For i = a To b s=s+i 示的结果为0。程序错在何处?下面使用调试 Next 工具调试该程序,找出错误所在。 c=s End Sub
注意:在立即窗口中,不接受数据声明,如:Dim x as Integer。
2015/11/25
清华大学出版社
12
10.3.2 调试示例
VB提供的各种调试工具,不仅可以帮助用户检查程序的逻辑 错误,而且还可以帮助用户理解程序的执行过程,如过程(函数) 的参数传递方式。 【例10.2】设计一窗体,如左图所示。 在窗体上放置文本框Text1、Text2, 分别用于输入一个整数闭区间的上 下限,当单击【计算】按钮时, Text3中显示该闭区间上所有整型数 据的累加和。其中累加的计算使用 过程sum来完成。
清华大学出版社
5
图10-6
运用这些调试工具可以对产生逻辑错误的程序进行调试,对程 序的调试大致分为三个步骤: 第一步是设置断点; 第二步是跟踪程序运行; 第三步是使用调试窗口。
2015/11/25
清华大学出版社
6
1.设置断点
就是在程序代码中设置一些断点,当程序执行到该点时就会自 动暂停下来,以方便用户对程序进行调试。 例:验证【例10.1】的运行结果错在何处? (1)在程序代码区人工设定一个断点。 (2)运行程序,当执行到了设置断点 的代码行时,程序终止进入中断状态, 将鼠标移动到某个变量上面,可以看 到设置断点代码行中变量的值。
思考:
判断1+2+……+100的累加结果在i=?时累加值超过4000,使用 【监视窗口】如何完成?
2015/11/25
清华大学出版社
11
立即窗口
使用立即窗口可以检查某个属性或变量的值,还可以对表达式求值、 为变量或属性赋值。 立即窗口的使用有下面三种: (1)在设计模式下,直接在立即窗口中对变量赋值,或使用Print 方法输出变量的值。 (2)在应用程序中,使用Debug.Print 语句把信息输入到立即窗口。 例如,将【例10.1】的程序代码中的输出语句改为“Debug.Print s”, 运行结果会在立即窗口中输出。 (3)在中断模式下,可以在立即窗口中使用Print方法输出当前变 量或控件的值,也可以对当前变量或控件的属性赋值。
2015/11/25
清华大学出版社
3
3.逻辑错误
逻辑错误是指从语法上看程序代码是有效的,并且也可以运行, 但得不到应有(正确)的结果。与上述两种错误不同,逻辑错误不 报告错误信息。 【例10.1】编程计算0.1+0.2+0.3+……+0.9的值。 Private Sub Command1_Click() Dim i As Single,s As Single For i = 0.1 To 0.9 Step 0.1 s=s+i Next i Print s End Sub
2015/11/25
清华大学出版社
2
10.1 VB程序的错误类型
VB应用程序的错误一般可分为3类,即编译错误(语法错误)、 运行错误和逻辑错误。 1.编译错误:指程序在编译时出现的错误(语法错误)。 2.运行错误:运行错误是指程序本身没有编译(语法)错误, 这种错误在编译时很难发现,只是在运行时才能暴露出来。例如 下面求某个数阶乘的函数:
10.3 程序调试 10.3.1 Visual Basic程序调试工具
为了使用调试工具,应首先进入中断模式,此时程序中的变量 和控件的属性值都被保留下来,为用户分析应用程序的当前状态, 解决程序的各种错误提供了有力的保障。图10-6所显示的【调试】 工具栏为用户提供了许多功能强大的调试工具。
2015/11/25
2015/11/25
清华大学出版社
13
双击【计算】按钮,编写程序代码: Private Sub Command1_Click() Dim x As Integer,y As Integer,z As Integer x = Val(Text1.Text) y = Val(Text2.Text) Call sum(x, y, z) ‘ 调用过程sum ,通过实参数z返回结果 Text3.Text = Str(z) End Sub
2015/11/25
清华大学出版社
10
用法一: 例:通过【监视】窗口对【例10.1】进行调试,检测变量s和i的 值的变化情况。 用法二: 这种用法是在当表达式的值满足某个条件时,可以使应用程序 自动进入到中断模式的一种调试手段。这种方法不需要在代码 区设置断点。 例: 在【例10.1】中,为了检测当变量s的值大于3时,循环变 量i的值;可以通过对【监视窗口】的相关设置来完成。
例:使用调试窗口来完成调试【例题10.1】的运行结果错在何处?
2015/11/25
清华大学出版社
9
本地窗口
只显示当前过程中变量的值(即使是 全局变量,也不会显示)。 打开本地窗口的步骤: 1)设置断点后,启动程序; 2)程序被中断后,单击【视图】菜 单中的【本地窗口】选项或单击【调 试】工具栏的【本地窗口】按钮。 监视窗口 使用【监视】窗口有两种用法: 一是可用来显示某些表达式或变量的值,以确定这写表达式或变量 的结果是否正确; 二是可以设置当某个表达式返回True时,强迫程序中断。
2015/11/25
清华大学出版社
14
调试步骤:
(1)将断点设置在主程序的“Call sum(x, y, z)”语句处。然 后运行程序,在Text1和Text2中分别输入1和5。 (2)运行程序,单击【计算】按钮,当程序中断后,打开 【监视】窗口,向【监视】窗口添加监视表达式,x、y、z、 a、b、c;注意此时各监测表达式的值。因为当前程序的控 制权在主程序,所以过程sum中的参数a、b、c还没有意义, 在监视窗口中显示为“<溢出上下文>”。
正确的结果应该是4.5,但按照上面的代码,结果却是3.6。
2015/11/25
清华大学出版社
4
从语法和算法设计思路来看,都没有错误,但始终得不 到正确的结果。这类错误是所有错误中最难诊断、最难解决 的错误,只有通过调试工具的帮助,对程序进行逻辑分析、 代码调试及分析、比较运行结果等综合手段才能最终加以解 决。
清华大学出版社
16
(5)按F8键继续以逐语句方式运行程序,此时过程sum执行结束,返回 到主程序Command1_Click(),过程sum中的变量重新显示为“<溢出 上下文>” 。说明这些变量此时没有意义(这也说明:过程内部的变 量的作用域只限于当前过程)。同时我们注意到,作为与形参数c对 应的实参数z的数值仍然为0。所以,我们试图通过将形参数c的运算 结果传递给z,并没有成功。
2015/11/25
清华大学出版社
19
10.4.3 捕获错误语句
错误处理程序指定的必须在同一过程中,On Error语句的语法 格式有两种形式: 1. 用法一 On Error GoTo 标号 〈可能出错的语句〉 〈Exit Function(Sub)〉 〈标号:〉 [〈错误处理〉]
该用法是在对错误不需要特别处理,只是显示一下提示信息以告 诉用户出错的原因时使用。
2015/11/25
清华大学出版社