什么是调试?调试的目标是什么?调试就是查明问题的根本原因,这是一切事情的基础!
看到过很多文章,设计,代码,需求,方法……可是很少看到有人写调试,是因为它太容易,所以不屑一提,还是因为它太细节,不易描述?对于高手来说,调试也许轻而易举,哪怕不知道如何描述调试,至少知道如何调试,可是,很多初学者并没有调试的概念,也不知道如何调试。问自己这么一个问题:当程序遇到问题的时候,你是用心的在分析原因,还是仅仅凭着直觉进行修改?
调试,其实不容易,它比其他任何过程都需要动脑,它不发生在调试器或者代码中,而是形成于大脑中,找到并理解问题的根源,才能进行其他的工作。
最近看到这本Paul Butcher的《软件调试修炼之道》,如获至宝,对于调试,其实作为程序员,我们对这个词并不陌生,但是为何有些人能快速准确无误找出原因而有人却丈二和尚摸不着头脑?跟着这本书,让我们一起走进调试的世界吧~
Debugging is an iterative process.——调试是一个反复的过程
有效的调试如何执行?
1.弄清楚软件为什么会运行失常
2.修复这一问题
3.避免破坏其他部分
4.保持或者提高代码的总体质量(可读性、架构、测试覆盖率、性能等)
5.确保同样的问题不会再其他地方发生,也不会再次发生
通过仔细地构建实验环境并观察软件的运行情况,可以更有效地找到问题,这样做不仅更为快捷,而且通过观察可以使你重新审视自己关于软件运行还有哪些错误的假设。记住:软件本身就是你的工具箱中最强有力的工具~
调试过程的核心包括:
1. 问题重现 找一个可靠并简洁的方式来按需求重现问题
2. 问题诊断 提出假设,并通过实验来测试它们,直到找出引起缺陷的潜在原因
3. 缺陷修复 设计和进行一些修改来修复问题,不要引入回归问题,保持和提高软件的整体质量
4. 反思 吸取教训
一般来说,这些步骤是按顺序执行的,这算是一个迭代过程,在问题诊断中学到的知识可能会高速你如何提高重现问题的水平,或者在软件修复中学到的知识可能会使你重新考虑你的诊断结果。
基本原则:
1. 一次只解决一个问题
2. 确保你知道自己要找的是什么:正在发生什么?应该发生什么?
3. 先检查简单的事情
本章至此告一段落,下一章将详细讲解调试过程的核心之重现问题~