- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下载
第5章 排 错
b u g .
b. 机器、计划或其他类似东西中的缺陷、故障或过失。源自美国。
1 8 8 9年《Pall Mall报》3月11 日1 / 1,我听说爱迪生先生前两夜都爬起来在他的留
声机里寻找“b u g ”—这表示解决一个困难,说是有什么想像中的害虫秘密地
隐藏在里面并造成了所有的麻烦。
《牛津英语词典》第2版
我们在前四章里已经给出了许多代码,而且一直假装这些代码一写好就都工作得完美无
缺。当然这绝不会是真的。程序里必然有大量的错 ( b u g ) 。“b u g ”这个词并不是程序员发明的,
但它现在确实是计算领域中最常见的一个词。难道软件就该这么难吗?
这里的一个原因是,程序的复杂性与各部件间可能互相作用的途径数目有关。一个软件
通常由许多部分组成,其互相作用的可能途径真是数不胜数。人们提出了许多技术,以减弱
软件各部件间的关联,使存在交互作用的程序片段更少一些。这方面的技术包括信息隐蔽、
抽象和界面,以及各种支持它们的语言特征等等。也有些技术的目标是为了保证程序的完整
性——程序证明、模型技术、需求分析和形式化验证——不过它们还只是被成功地用到一些
比较小的问题上。至今还没有什么东西能够改变软件构造的方式。现实就是这样,总是存在
许多程序错误,需要通过测试来发现,通过排错去纠正。
好的程序员知道他们在排错上花费的时间至少与写程序一样多,所以他们努力从自己的
错误中学习。你发现的任何错误都能教导你如何防止类似错误的再次发生,以及在发生这种
问题时及早识别它。
排错是非常困难的,有可能花费很长的、无法预期的时间。这里的目标应该是避免出现
太多问题。对减少排错时间能有所帮助的技术包括:好的设计、好的风格、边界条件测试、
代码中的断言和合理性检查、防御性程序设计、设计良好的界面、限制全局数据结构以及检
查工具等。总之,早期预防胜过事后治疗。
那么语言又有什么作用呢?在程序设计语言的发展中,一个重要的努力方向就是想通过
语言特征的设计帮助避免错误。有些特征使某些种类的错误很难再出现了,例如:下标范围
检查、受限制的指针或完全取消指针、废料收集、字符串数据类型、带类型的 I / O 以及强类型
检查等等。但是,硬币也有它的另外一面,有些语言特征有引起错误的倾向: g o t o语句、全
局变量、无限制的指针及自动类型转换等等。程序员应该知道他们所用语言中有潜在危险的
那一部分,使用那些机制时必须特别当心。他们还应该打开所有的编译检查,留意所有的警
告。
每个为预防某些问题而设置的语言特征都会带来它自己的代价。如果一个高级语言能自
动地去掉一些简单的错误,其代价就是使得它本身很容易产生一个高级的错误。没有任何语
言能够防止你犯错误。
94计计程序设计实践
下载
虽然没有人会希望这样,但实际程序设计的大部分时间确实是花在了调试和排错上。在
本章里,我们将讨论如何尽可能地缩短排错时间,提高这方面工作的效率。第 6章将讨论调试
问题。
5.1 排错系统
重要语言的编译系统通常都带有一个复杂的排错系统。它常常是作为整个开发环境里的
一个组成部分,在这个环境里集成了有关程序建立和源代码编辑、编译、执行和排错的各种
功能。排错系统一般包括一个图形界面,使人能够以按语句或者按函数的方式分步执行程序,
在某个特定源程序行或者在某个特定条件发生时停下来等等。通常还提供了按照某些指定格
式显示变量值等许多功能。
在已知某程序里存在错误的情况下,可以直接启动排错系统。有的排错系统也可以在程
序执行中发生某些未预料到的问题时自动取得控制。当程序死了的时候,通常很容易确定它
执行到了什么位置:只要检查活动的函数序列 (追踪执行栈) ,显示出局部和全局变量值。这么
多信息可能已经足够标识出错误了。如果还不行,利用断点和单步执行机制,可以一步步地
重新执行程序,找到某些东西出问题的第一个位置。
在一个正确的环境里,对一个有经验的使用者,好的排错系统确实能使排错工作很有成
效,工作效率也
您可能关注的文档
- “5S”管理在电子封装企业中的应用.pdf
- 《阿司匹林合成》吉林大学课件.ppt
- 《8-羟基喹啉制备》吉林大学课件.ppt
- 《生理学设计实验》吉林大学课件.ppt
- 《实验三 蟾蜍坐骨神经腓肠肌标本制备和不同强度和频率的刺激髓肌肉收缩的影响》吉林大学课件.ppt
- 《实验四、反射弧分析》吉林大学课件.ppt
- 《家兔膈肌放电与呼吸运动实验》吉林大学课件.ppt
- 《生理数据采集与分新技术》吉林大学课件.ppt
- 《植物标本的采集与制作》吉林大学课件.pptx
- 《坐骨神经腓肠肌标本制备及不同强度和频率刺激对肌肉收缩的影响》吉林大学课件.ppt
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第2课时 点的坐标特征.pptx
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第3课时 建立适当的平面直角坐标系.pptx
- 北师大版(2024)八年级数学上册课件 4.3 一次函数的图象 第1课时 正比例函数的图象及性质.pptx
- (人教A版数学选择性必修三)讲义第15讲7.1.1条件概率(学生版+解析).docx
- (人教A版数学选择性必修三)讲义第19讲8.1成对数据的统计相关性(8.1.1变量的相关关系+8.1.2样本相关系数)(学生版+解析).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第2课时 加减消元法.pptx
- (人教A版数学选择性必修一)2025年秋季学期讲义第01讲1.1.1空间向量及其线性运算(学生版+教师版).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第1课时 代入消元法.pptx
- 北师大版(2024)八年级数学上册课件 5.3 二元一次方程组的应用 第3课时 二元一次方程组的应用(3).pptx
- 北师大版(2024)八年级数学上册课件 5.4 二元一次方程与一次函数 第2课时 用二元一次方程组确定一次函数表达式.pptx
文档评论(0)