文档介绍:该【Windows程序设计-第5章排错PPT课件 】是由【梅花书斋】上传分享,文档一共【51】页,该文档可以免费在线阅读,需要了解更多关于【Windows程序设计-第5章排错PPT课件 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。Windows程序设计
第5章 排错
謝晓芹
1
Windows程序设计
排错(Debugging)
bug .
b. 机器、计划或其他类似东西中的缺陷、故障或过错。源自美国。
1889年《Pall Mall报》3月11曰1/1,我听说爱迪生先生前两夜都爬起来在他的留声机里寻找“bug”—这表达处理一种困难,说是有什么想像中的害虫秘密地隐藏在里面并导致了所有的麻烦。
《牛津英语词典》第2版
2
Windows程序设计
Questions
Think about your programming experience.
What types of bugs have you encountered?
How did you find them?
Which bugs were particularly difficult to find.
3
Windows程序设计
Topics
引言
好线索,简单错误(Good Clues, Easy Bugs)
无线索,难办的错误(No Clues, Hard Bugs)
不可重现的错误(Non-reproducible Bugs)
最终的手段(Last Resorts)
4
Windows程序设计
引言-State of The Art
程序的复杂性与各部件间也许互相作用的途径数目有关。为减弱软件各部件间的关联提出了许多技术:
信息隐蔽、抽象和界面,以及多种支持它们的语言特征
程序证明、模型技术、需求分析和形式化验证
软件构造的方式决定了现实总是存在许多程序错误,需要通过测试来发现,通过排错去纠正。
排错技术
排错是非常困难的,但初期防止胜过事后治疗。
没有任何语言可以防止你出错误。
经验
实际程序设计的大部分时间确实是花在了调试和排错上,因此提议努力从自已的错误中学习。你发现的任何错误都能教导你怎样防止类似错误的再次发生,以及在发生这种问题时及早识别它
5
Windows程序设计
引言-State of The Art
排错系统
一般包括一种图形界面,使人可以以按语句或者按函数的方式分步执行程序,在某个特定源程序行或者在某个特定条件发生时停下来等等。一般还提供了按照某些指定格式显示变量值等许多功能。
排错系统可以在程序执行中发生某些未预料到的问题时自动获得控制。
当程序死了的时候,很容易确定它执行到了什么位置:
只要检查活动的函数序列(追踪执行栈),显示出局部和全局变量值。这样多信息也许已经足够标识出错误了。
假如还不行,运用断点和单步执行机制,可以一步步地重新执行程序,找到某些东西出问题的第一种位置。
6
Windows程序设计
引言-State of The Art
问题:有了排错系统等强有力的工具,为何还要考虑在不用它们的状况下做排错工作?
原因
某些在主流之外的语言并没有排错系统,或者只有非常低级的排错功能
排错系统是依赖于详细系统的
有些程序用排错系统很难处理,例如多进程的或多线程的程序、操作系统和分布式系统,
能依托的:打印语句,经验和对代码的推理能力
7
Windows程序设计
引言-State of The Art
提议
倾向于除了为获得堆栈轨迹和一两个变量的值之外不去使用排错系统。
重要原因:人很容易在复杂数据构造和控制流的细节中迷失方向,我们发现以单步方式遍历程序的方式,还不如努力思考,辅之以在关键位置加打印语句和检查代码。后者的效率更高。
与审阅认真安排的显示输出相比,通过点击通过许多语句花费的时间更长。
确定在某个地方安放打印语句比以单步方式走到关键的代码段更快,虽然是你已经懂得要找的位置。
用于排错的语句存在于程序之中,而排错系统的执行则是转瞬即逝的
8
Windows程序设计
引言- State of The Art
排错的方式
排错系统:
依赖于详细系统
有些程序很难处理
有时效率较低
思维措施:
怎样对错误及其也许原因进行推理的技术
工作有成效,效率更高
9
Windows程序设计
Topics
引言
好线索,简单错误(Good Clues, Easy Bugs)
无线索,难办的错误(No Clues, Hard Bugs)
不可重现的错误(Non-reproducible Bugs)
最终的手段(Last Resorts)
10
Windows程序设计