有人说好程序是调出来的,且不说这句话是否片面,不可否认的是调试很重要。
调试的目的是找出问题,二分法冒烟调试是定位大片代码问题最简单粗暴,也是非常有效的方式,因为这种调试方法定位错误代码行的时间复杂度是对数阶。
“二分法冒烟调试”这个名字可能会有点让人迷惑。其实很简单,“二分法”概念取自我们常见的“二分法查找”,这个应该无需解释;而“冒烟”则是取自“冒烟测试”,就是不管三七二十一先运行一下看看正常与否。
“二分法冒烟调试”非常适合用于动态语言,如PHP、Javascript,很多时候因为语言的动态特性导致很难定位问题代码。
举个例子:一个项目是基于第三方的 PHP 系统中做定制开发。该系统定义了自己的模板机制,模板中可以嵌套 PHP 代码。而一个几百行代码的模板文件中的某一行有错,但错误信息只能定位到文件。
这时候二分法冒烟调试就可以登场了:
- 首先把这个文件拦腰剪走一半代码,刷新浏览器,有错吗?
- 有,剪走剩下的代码的一半代码,也就是总代码的1/4,刷新浏览器,有错吗?
- 没错,就说明至少刚删掉的那些代码中有问题。
- 剪走现有正常的代码把刚才剪掉代码的一半粘回来,刷新浏览器,有错吗?
- ……
- 如此反复,基本3~5次就能定位到错误了。
步骤看似麻烦,其实非常省时省力。用这个方法可以先定位错误代码,再分析错误原因。
二分法的思想在调试中还有很多变形用法,今天时间有限就不细谈了,以后如果有时间的话再补充吧。
时间: 2024-11-13 06:49:47