定位问题的若干小方法
1.使用log打印感兴趣的相关信息。
2.打印方法的调用栈
[java]
package com.jue.test;
public class TestMain {
public static void main(String[] args) {
test();
}
private static void test() {
System.out.println("test start");
new Exception().printStackTrace();
System.out.println("test end");
}
}
package com.jue.test;
public class TestMain {
public static void main(String[] args) {
test();
}
private static void test() {
System.out.println("test start");
new Exception().printStackTrace();
System.out.println("test end");
}
}
3.折半查找
对于一个问题发生的以后,可以把认为可以的代码全部屏蔽掉,再进行测试,看是否正常,正常说明A,否则说明B
屏蔽的代码并不是问题产生的地方,需要考虑其他地方。
屏蔽的代码正是存在问题的地方,可以通过折半查找的方法,递归找到原因。
4.一个新的demo测试
在一个比较大的工程里,发现一个功能不好用的时候,可以单独写一个demo,demo的意义在于:
干净(这个demo中只有我们感兴趣的部分,减少了其他影响它的因素,能够更好更针对性的发现问题)
测试调试更方便(小的demo,处理起来更有效率)
5.历史回归
对于一个之前没有存在的问题,可以选择恢复历史版本,再进行查找测试,直到找到问题所在。
6.借助于工具
有很多很专业的不同的度量的工具,可以很方便的帮助查到问题。(如memory leak,可以使用mat帮助分析,可以通过debug工具进行debug调试)
7.出去走走
出去走走,放松一下也有助于问题的分析。
8.背景改变定位
对于一个 问题,诸如UI,当 发现对属性的更改总是没有效果的时候,可以考虑改变这个UI的背景颜色,首先需要具体确定下,这个UI是否是我们正在修改的对象,我们也可以对一些UI赋予不同的颜色,从而观测他们的存在与否,他们的大小尺寸,以及变化情况。
9.借助网络
专业社区,看有无雷同问题。
10.请教同事
同事可能:
遇到过类似问题,这个最好。
同事的技术不错,深入思考,得出结论,这个也很好。
同事局外人,思考的方式可能与自己长时间思考的不同,也许可以精确的定位到问题。
11.理清思路
这是什么东西
这个东西能干什么
这个东西是怎样干的
12.注意一些异常的场景
当问题的发生的时候,注意是否有一些其他的异常场景,这些异常场景也许就是问题的关键。
补充:软件开发 , Java ,