软件调试(30)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 例: fore(int i = 0; i < 100; i++)//关键字书写错 误 {}
编译错误
3 运行时错误
• 运行时错误是指应用程序在运行期间执行 了非法操作或某些操作失败,如打开的文 件未找到、磁盘空间不足、网络连接断开、 除法中除数为零等等;
• 例:数组下标越界是一种典型的运行时错 误。 int [] arrayX = new int [4]; for(int i = 0; i<5;i++){ arrayX[i] = i;
}
运行时错误
运行时错误
4 逻辑错误
• 逻辑错误是指应用程序未按照预期的方式运行时所产生 的错误。一般来讲,这不是属于语法层次的错误,应用 程序可以执行,但是得不到正确的预期结果。
• 例: 对于一个数组的初始化,预期对其某个特定位置赋初始 值,其余置零:
int [] array = new int [100]; array[55] = 55; for(int i = 0;i<100;i++)
霍波诙谐的把程序故障统称为“臭虫 (BUG)”,把排除程序故障叫DEBUG
软件调试的原因?
任何一个天才都不敢说,他编的程序 是完全正确的。几乎每一个稍微复杂一 点的程序都必须经过反复的调试,修改, 最终才完成。所以说,程序的调试是编 程中的一项重要技术。
在应用程序中发现并排除错误的过程 叫做调试。
(2) 研究有关部分的程序,找出错误的内在 原因;
(3) 修改设计和代码,以排除这个错误; (4) 重复进行暴露了这个错误的原始测试或
某些有关测试。
调试的主要难点——技术上
• 现象与原因所处的位置可能相距甚远。 • 当其它错误得到纠正时,这一错误所表
现出的现象可能会暂时消失,但并未实 际排除。 • 现象实际上是由一些非错误原因(例如, 舍入不精确)引起的。 • 现象可能是由于一些不容易发现的人为 错误引起的。
调试的分类
• 程序的动态调试就是实际上机调试,它 贯穿在编译、连接和运行的整个过程中。 根据程序编译、连接和运行时计算机给 出的错误信息进行程序调试,这是程序 调试中最常用的方法,也是最初步的动 态调试。在此基础上,通过“分段隔 离”、“设置断点”、 “跟踪打印”进 行程序的调试。
几种主要的调试方法
调试的主要难点——技术上
• 错误是由于时序问题引起的,与处理 过程无关。
• 现象是由于难于精确再现的输入状态 (例如,实时应用中输入顺序不确定) 引起。
• 现象可能是周期出现的。在软、硬件 结合的嵌入式系统中常常遇到。
磨刀不误砍柴功
• 熟悉当前的开发(调试)环境,比如:设置断点、单 步运行、全速运行、终止运行,查看RAM、查看堆栈、查 看IO口状态……总之,要熟练掌握基本操作的方法,并 深刻了解其中意义。 • 了解软件本身的可用资源和特性。 • 了解操作系统和一些硬件资源的知识。 • 掌握基本的调试技巧和常用的调试工具。 • 搜索、鉴别资料的能力。(内事问百度、外事问谷歌) • 与人沟通,描述问题的能力。(调试36计的最后一 计——就是向他人讨教。尤其是我们现在可以直接询问一 些技术支持,这使得我们解决问题更加便捷。当然,你得 把话说明白才行)
误的外部表现,而外部表现与内在原因之间 常常没有明显的联系。如果要找出真正的原 因,排除潜在的错误,不是一件易事。 • 可以说,调试是通过现象,找出原因的一个 思维分析的过程。
调试——一项最不受欢迎的活动
• 个人自尊会从中阻挠 • 热情耗尽 • 可能迷失方向 • 必须自力更生
调试的步骤
(1) 从错误的外部表现形式入手,确定程序 中出错位置;
软件调试
什么是调试(Debug)?
• 软件调试是在进行了成功的测试之后才 开始的工作。它与软件测试不同,调试 的任务是进一步诊断和改正程序中潜在 的错误。
• 调试活动由两部分组成:
– 确定程序中可疑错误的确切性质和位置。 – 对程序(设计,编码)进行修改,排除这个
错误。
调试的特点:
• 调试工作是一个具有很强技巧性的工作。 • 软件运行失效或出现问题,往往只是潜在错
array[i] = 0; 那么在这段代码完成后就没有得到我们预期的结果(代 码执行顺序的逻辑错误)。
ຫໍສະໝຸດ Baidu 调试的类别
• 调试方法分为两种:动态调试和静态调试。 • 程序的静态调试就是在程序编写完以后,
由人工“代替”“模拟”计算机,对程序 进行仔细检查,主要检查程序中的语法规 则和逻辑结构的正确性。实践表明,有很 大一部分 错误可以通过静态检查来发现。 通过静态调试,可以大大缩短上机调试的 时间,提高上机的效率。
软件调试
软件测试
什么是软件调试?
•软件调试的原因? •什么是软件调试? • 软件调试的特点 • 调试步骤 •调试的主要难点
DEBUG的由来
1937年,美国青年霍德华.艾肯找到IBM公司 为其投资200万美元研制计算机,第一台成品 艾肯把它取名为:马克1号(mark1)
为马克1号编制程序的是哈佛的一位女数学家 格蕾丝·莫雷·霍波,有一天,她在调试程序时 出现故障,拆开继电器后,发现有只飞蛾被夹 扁在触点中间,从而“卡”住了机器的运行
•暴力法调试 •归纳法 •演绎法 •回溯法 •测试法
应用以上任一种方法之前,都应当对错误的征兆进行全面彻底的 分析,得出对出错位置及错误性质的推测,再使用一种适当的调 试方法来检验推测的正确性。
强行排错
这种调试方法目前使用较多,效率较低。它不 需要过多的思考,比较省脑筋。例如:
– 通过内存全部打印来调试,在这大量的数据中寻找出错的位 置。
• …… • 差不多了,如果上述6把砍柴刀磨好了,就可以开始调 试了。接下来,请调试你的程序……
软件常见的错误类型
•语法错误 •编译错误 • 运行错误 • 逻辑错误
1 语法错误
• 词法错误和句法错误。 • 例如:前边有{ ,后边缺少 } • 参数该是整型的变量用了字符型 • ……
2 编译错误
• 编译错误是指程序在编译过程中出现的错误。它 是由于不正确的编写代码而产生的如非法使用或 丢失关键字、遗漏了某些必需的标点符号、函数 调用缺少参数或传递了不匹配的参数等等。
相关文档
最新文档