您的位置:首页 > 其它

定位bug技巧

2015-05-04 23:01 183 查看
潦草总结,有待进一步完善.

自己开始工作,在工作中遇到了很多bug。

总结定位bug步骤如下:

1、观察现象,通过现象分析出可能出问题的几个模块或者一个

因为bug有时候不是因为单一模块引起的,所以在初次观察时因尽量可能想出一些可能出问题的模块,在此基础上进一步排除。(排除法

另一种方法,是通过现象可能明显观察出出问题的模块,可以快速进行定位。(单刀直入

2、在前面步骤定位了具体的模块,就需要深入细节进行探究了。

程序顺序执行法:(以人为类比)一个人是有各个器官,组织,各个系统组成的,这些东西让人成为了一种活得生物,并且具有了人的特质。所以我们给定这个人一定的行为,让他去做事,做好了,可能说明通过了这方面的测试。而做不好,则说明存在缺陷。那么参与这个活动的那些器官,可能有一些存在问题。(确定了一个大的集合,但是需要从中进一步筛选。为了进一步确定出问题的器官,可以给定另一个行为,根据是否出问题的情况,再次确定一个集合,然后根据实际情况进行集合的运算。依次类推。最终确定)

调试时(未考虑多线程的情况),会发现出问题的模块。它之所以会出错,可能是因为自身原因,也可能是因为其他模块为其提供了错误的服务,不完善的服务。

查看时:(1)一般不查看模块3以及其以后的模块。

(2)先查看模块2,再逐步向前寻找可能提供错误服务的模块。(可能前面会有多个模块提供错误服务

模块1 ---》
模块2 (问题模块)---》模块3 ····· (执行了一次行为

也可能:(多个模块,同时为模块2提供服务) (可能用前面集合的办法会能进行筛选出一部分内容)

模块0 ---》
模块2 (问题模块)

模块1 ---》
模块2 (问题模块)

数据流追踪法:(调试时可以查看你所感兴趣的数据流的流向)从某种角度(生物学角度),程序的各个模块就像人的身体的各个组织,各个器官。人体中有着各种各样的系统(血液,神经等),他们各自相对独立的运行着。同样,一个程序也是如此,程序中的数据只有流动起来,才能让这个程序活起来,才能保持各个模块之间的相互供给,相互服务。

所以当数据流经某个模块,更具体点是流经某个类,某个函数时,数据流出现了问题,说明这个模块可能错误的加工了数据。进而可以缩小范围,如此递推下去,知道定位到出错位置。(有种迭代的感觉)

通过跟踪一个数据在不同的程序模块中的变化,发现错误的地方。(对上面的总结)

待续······
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: