定位bug技巧
2015-05-04 23:01
183 查看
潦草总结,有待进一步完善.
自己开始工作,在工作中遇到了很多bug。
总结定位bug的步骤如下:
1、观察现象,通过现象分析出可能出问题的几个模块或者一个。
因为bug有时候不是因为单一模块引起的,所以在初次观察时因尽量可能想出一些可能出问题的模块,在此基础上进一步排除。(排除法)
另一种方法,是通过现象可能明显观察出出问题的模块,可以快速进行定位。(单刀直入)
2、在前面步骤定位了具体的模块,就需要深入细节进行探究了。
程序顺序执行法:(以人为类比)一个人是有各个器官,组织,各个系统组成的,这些东西让人成为了一种活得生物,并且具有了人的特质。所以我们给定这个人一定的行为,让他去做事,做好了,可能说明通过了这方面的测试。而做不好,则说明存在缺陷。那么参与这个活动的那些器官,可能有一些存在问题。(确定了一个大的集合,但是需要从中进一步筛选。为了进一步确定出问题的器官,可以给定另一个行为,根据是否出问题的情况,再次确定一个集合,然后根据实际情况进行集合的运算。依次类推。最终确定)
调试时(未考虑多线程的情况),会发现出问题的模块。它之所以会出错,可能是因为自身原因,也可能是因为其他模块为其提供了错误的服务,不完善的服务。
查看时:(1)一般不查看模块3以及其以后的模块。
(2)先查看模块2,再逐步向前寻找可能提供错误服务的模块。(可能前面会有多个模块提供错误服务)
模块1 ---》
模块2 (问题模块)---》模块3 ····· (执行了一次行为)
也可能:(多个模块,同时为模块2提供服务) (可能用前面集合的办法会能进行筛选出一部分内容)
模块0 ---》
模块2 (问题模块)
模块1 ---》
模块2 (问题模块)
数据流追踪法:(调试时可以查看你所感兴趣的数据流的流向)从某种角度(生物学角度),程序的各个模块就像人的身体的各个组织,各个器官。人体中有着各种各样的系统(血液,神经等),他们各自相对独立的运行着。同样,一个程序也是如此,程序中的数据只有流动起来,才能让这个程序活起来,才能保持各个模块之间的相互供给,相互服务。
所以当数据流经某个模块,更具体点是流经某个类,某个函数时,数据流出现了问题,说明这个模块可能错误的加工了数据。进而可以缩小范围,如此递推下去,知道定位到出错位置。(有种迭代的感觉)
通过跟踪一个数据在不同的程序模块中的变化,发现错误的地方。(对上面的总结)
待续······
自己开始工作,在工作中遇到了很多bug。
总结定位bug的步骤如下:
1、观察现象,通过现象分析出可能出问题的几个模块或者一个。
因为bug有时候不是因为单一模块引起的,所以在初次观察时因尽量可能想出一些可能出问题的模块,在此基础上进一步排除。(排除法)
另一种方法,是通过现象可能明显观察出出问题的模块,可以快速进行定位。(单刀直入)
2、在前面步骤定位了具体的模块,就需要深入细节进行探究了。
程序顺序执行法:(以人为类比)一个人是有各个器官,组织,各个系统组成的,这些东西让人成为了一种活得生物,并且具有了人的特质。所以我们给定这个人一定的行为,让他去做事,做好了,可能说明通过了这方面的测试。而做不好,则说明存在缺陷。那么参与这个活动的那些器官,可能有一些存在问题。(确定了一个大的集合,但是需要从中进一步筛选。为了进一步确定出问题的器官,可以给定另一个行为,根据是否出问题的情况,再次确定一个集合,然后根据实际情况进行集合的运算。依次类推。最终确定)
调试时(未考虑多线程的情况),会发现出问题的模块。它之所以会出错,可能是因为自身原因,也可能是因为其他模块为其提供了错误的服务,不完善的服务。
查看时:(1)一般不查看模块3以及其以后的模块。
(2)先查看模块2,再逐步向前寻找可能提供错误服务的模块。(可能前面会有多个模块提供错误服务)
模块1 ---》
模块2 (问题模块)---》模块3 ····· (执行了一次行为)
也可能:(多个模块,同时为模块2提供服务) (可能用前面集合的办法会能进行筛选出一部分内容)
模块0 ---》
模块2 (问题模块)
模块1 ---》
模块2 (问题模块)
数据流追踪法:(调试时可以查看你所感兴趣的数据流的流向)从某种角度(生物学角度),程序的各个模块就像人的身体的各个组织,各个器官。人体中有着各种各样的系统(血液,神经等),他们各自相对独立的运行着。同样,一个程序也是如此,程序中的数据只有流动起来,才能让这个程序活起来,才能保持各个模块之间的相互供给,相互服务。
所以当数据流经某个模块,更具体点是流经某个类,某个函数时,数据流出现了问题,说明这个模块可能错误的加工了数据。进而可以缩小范围,如此递推下去,知道定位到出错位置。(有种迭代的感觉)
通过跟踪一个数据在不同的程序模块中的变化,发现错误的地方。(对上面的总结)
待续······
相关文章推荐
- 定位Bug技巧总结
- 定位Bug技巧总结
- 【度学堂】软件测试之bug分析定位技巧
- 常用的CSS BUG解决方法与技巧
- 郁闷的1px - IE6绝对定位的神奇bug
- Eclipse调试Bug的七种常用技巧
- 利用重绘解决IE下JS交互产生的定位重叠等棘手bug
- Web测试中定位bug方法
- XCode调试技巧之EXC_BAD_ACCESS中BUG解决
- 如何利用charles迅速定位bug
- ie6绝对定位BUG
- PHPCMS 使用心得与技巧,以及小BUG的纠正
- IE7局部滚动区域下绝对定位或相对定位元素不随滚动条滚动的bug
- 程序员快速处理代码bug的5大技巧
- Xcode4 的错误调试定位技巧
- Excel实用小技巧-活用定位和自动求和
- XCode调试技巧之EXC_BAD_ACCESS中BUG解决
- 10个修复ie6下bug技巧[转]
- 最常用的12种CSS BUG解决方法与技巧
- iOS小技巧14- 调试bug技巧-打印XCode的 Stack Trace信息