注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我心飞翔

我有一个梦想,……

 
 
 

日志

 
 
 
 

如何排除程序中的bug   

2008-08-03 03:43:06|  分类: 产品工程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

感觉不错,记录下来: ( 原文出自 http://xyzboard.com/)

一点想法,在此抛砖引玉了。

找bug的方法,是值得研究的,因为找bug的时间在软件开发周期中占有极大的比例。只要统计一下,软件开发者花费在排除bug上的时间,与花费在写代码上的时间的比例,就可以知道。排除bug的时间在整个软件开发周期中占到了80%以上。

所以,排除bug的方法就有必要好好研究一下。下面是三种典型的排除bug的方法:

一种是猜bug的方法。很多开发者,并没有花心思去排除bug,而是直接在原代码中找到某个可能出错的地方,修改一下,再执行一次看看bug还在不在,如果还在,就换个地方修改,看看bug解决了没有,如此住复,只到bug解决。这种方法并不是真正的排除bug,而是开发者觉得无法分析出bug出现的原因后,放弃了分析,转而使用省脑力耗体力的方法来猜bug。我们软件组的人,不允许出现这种猜bug的情况,因为这种事情只有业余选手才会干出来。

一种是设断点调试的方法。设断点之后,可以仔细分析当前的变量、结构是否正常,从而找到bug。这个方法虽然比上一种方法要高效,但当随着程序趋于复杂时,调试bug花费的时间会越来越多,也会出现补了东边儿,漏了西边儿的情况。另外,在嵌入式领域,很多情况下是没有办法调试的,而且有很多bug是几天难得一见,不会让你有那么好的机会设下断点调试。

一种是断言分析法。对复杂的逻辑、输入输出条件等,设定断言或判断,并将不符合预想结果的错误信息输出。错误信息输出的越详细越好,而且可以存成log文件待事后分析。这样一但出现bug,就可以很快的通过断言、错误信息输出判断出bug所在的位置,从而即时解决。

在以上几种除错方法中,我最提倡的是第三种断言分析法。对于断言分析法,应该再辅助以自动测试代码,对软件中可以测试的函数、模块均进行自动测试,对边缘条件、分支组合进行尽可能的测试。一个一个的函数、模块都测好了,软件出现bug的机会就会减少,就好像盖高楼大厦时,地基要打牢一样。

断言分析法,与自动测试配合之后。在软件出现bug时,就应该冷静的思考一下,是什么地方可能导致bug,因为有了断言与自动测试,我们可以肯定的排除很多种情况,这样一条一条的理下来,最终达到不用调试,而是凭借逻辑分析,直指bug所在。达到这一步,一个软件高手就诞生了。

  评论这张
 
阅读(202)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017