谈起程序调试这件事情。调试是确定错误原因并纠正此错误的过程,跟测试不同,测试是检测错误的过程,在一些项目中,调试可能占到整个开发周期的50%。说到错误,那肯定离不开“bug”这个词,已故的海军少将Grace Hopper,COBOL的发明者之一,坚信“bug”一词可以追溯到第一台大型数字计算机,即Mark I,程序员在一次解决电路故障的时候看到一只大飞蛾,并发现这只飞蛾飞到了计算机里面,从此计算机故障就被归咎于“bug/虫子”了。
为什么要说调试这件事,看似简单,每个程序员都会做的一件事情,但是能不能做好就是另外一回事了。一项研究表明,针对同样一组缺陷,经验丰富的程序员找出缺陷所用的时间大约只是缺乏经验的程序员们的1/20。
通过调试,我们可以找出代码缺陷所在,代码里面有缺陷意味着什么,如果你希望代码里面一个缺陷都没有,那意味着你还没有完全理解程序的功能,我们可以从代码中出现的bug得到以下这些好处:
1.理解你正在编写的程序
2.明确你犯了哪种类型的错误
3.从代码阅读者的角度分析代码质量
4.审视自己解决问题的方法
5.审视自己修正缺陷的方法
常见的低效率的调试方法:
1.凭猜测找出缺陷
2.不要把时间浪费在理解问题上
在运用科学的调试方法时,会经历下面这些过程:
1.通过可重复的试验收集数据
2.根据相关数据的统计构造一个假说
3.设计一个实验来证明或者反正这个假说
4.根据需要重复进行上面的步骤
寻找缺陷的有效方法:
1.将错误状态稳定下来
2.确定错误的来源
3.修补缺陷
4.对所修补的地方进行测试
5.查找是否还有类似的错误