手记

Debug解决问题方法论

发现问题怎么办,如何处理,
所谓的Debug的一般流程是什么,
下面是我对此的一些思考总结,
后面还会继续完善补充。

1.处理思路总纲

  1. 发现问题

  2. 查看日志

  3. 没有日志,去找日志

  4. 找不到日志,继续找,有些藏得比较深

  5. 实在找不到日志,想办法打印日志

  6. 看到日志后,根据错误信息定位问题

  7. 仍然无法定位问题,则继续查看日志

  8. 逐字逐句的看日志,发散联想,是否遇到过类似的

  9. 根据日志给出错误信息谷歌百度

  10. 根据日志给出错误信息咨询他人

  11. 使用远程Debug跟踪代码定位问题

  12. 还不行,吃饭散步休息一下,把上面的步骤重新做一遍

  13. 解决问题

  14. 整理总结

  15. 发布博客

有时间的话,我会把上面的处理流程画一个流程图,
上面给出的是提纲式的Debug问题的步骤,
下面我会详细讲一下我的思考:

2.第一时间去看日志!为什么?

发现问题的时候,很多程序员喜欢靠猜去解决问题,
特别是初级程序员,看到问题一顿操作猛如虎,
最后浪费了半天时间也没能解决,毫无进展,
所以一定要养成习惯:发现问题第一时间去看日志。
其实有的程序员发现问题的时候不看日志也能解决问题,
确实如此,瞎猫也能碰上死耗子,但不建议常用,
更多的是他们曾经遇到过类似的问题,解决过,
所以第二次碰的的时候就不会再需要去看日志了,
这个就会让新入门的程序员以为他们也是靠猜的,
从此就养成了一个不好的习惯,不看日志喜欢靠猜,
有时候自己也会发懒,不去看日志,偶尔有奇效,
但尝试几次未果之后还是要回到正路上来,
查看日志,在哪里看?这是很多人上来便会遇到第一个问题。

3.日志在哪里看?

为此我们要学会找到日志,很多人因为不知道日志在哪里,
所有又回到靠猜的老路去了,这个日志在哪里就是第一道拦路虎,
一般来说业务系统在后台都是有日志文件的,
这些日志文件的路径都是可以配置的,
有的在启动脚本里面,
有的在配置文件里面,
有的甚至做到了前台页面里面,
我们可以看到有启动日志,还有业务日志,操作日志等等
这个需要程序员对系统有一定的熟悉,
不过Java系统一般来说都是差不多的,实际上手操作几下就知道了,
如果还找不到日志,没有办法之时又有人想回去继续靠猜了,
其实这个时候可以使用find和grep在Linux文件系统中搜索一下,
看看是否有可疑的log文件,里面可能有错误信息,比如ERROR之类的。

4.实在找不着日志,该怎么办?

如果实在找不着日志,不要灰心,
我们就要想办法让日志自己出现,
一般情况下,通过配置文件比如log4j配置,
打开相应的日志开关和设置好日志的级别比如DEUBG级别,
我们就可以把指定日志打印到指定的文件,
这样日志就好看多了,当然系统可能也会有其他配置文件,
这个需要自己去问去查,不然日志是不会自己凭空出现的,
如果打印日志的开关和日志级别都搞定了,
却发现我们预期的日志还没有怎么办,
这时候可以考虑远程Debug以及在代码中添加相应的日志,
远程Debug自己去查方法,然后跟着代码一步一步走,
看问题出在哪里了,需要一定的调试经验,需要熟悉代码,
否则简简单单的空指针异常都可以搞得人晕头转向,
明明已经调试到有问题的代码了,却看不出来代码错在哪,
在代码中添加相应的日志,可以是临时的日志也可以是永久的,
如果仅仅为了这次定位问题,打印出来相应的错误信息即可,
之后把临时日志从代码中去除,不要提交到代码库中去,
如果是代码设计上的缺陷,需要打印日志的地方而没有打印,
导致出问题的时候不好定位,就可以把打印日志提交到代码库,
这些缺失日志可能不直接和本次处理的问题相关,
但是为了方便以后定位问题,还是不要偷懒的好。

5.有了日志,该怎么看?

其实能够看到日志的错误信息,我们的问题就解决一大半了,
很多日志打印错误信息非常清楚,一看就能知道怎么解决。
如果不能一眼看出问题所在,就需要仔细查看日志,
逐字逐句的看日志,在脑子里面发散联想,提炼关键信息,
为什么要逐字逐句的看日志,因为关键信息就在日志中,
我们经常发现问题好不容易定位出来,
再回去看日志,发现日志已经提示的很清楚了,
如果能仔细看下日志,就能节省很多的时间,
还有就是以前是否遇到过类似的问题,是怎么处理的,
再接下来就是谷歌百度了,
一般先百度,查看中文内容是否有好的解决方案,
国内主要是CSDN,简书,新浪博客等等还是不错的,
不行再谷歌,查看英文内容是否有好的解决方案,
国外主要是stackoverflow,apache, wiki等官方资料。
查找资料也是需要技巧的,网上有一些资料是过时的失真的,
需要自己辨别,多搜索多看,学会快速找到自己需要的信息,
不迷失在信息的汪洋之中,需要掌握一定搜索技巧和经验积累。

6.休息,重复一遍问题定位过程

有些时候,我们定位问题就是解决不了,看了半天都不知道怎么办,
这个时候就需要先休息一下,可以吃个饭散个步,
然后我们再回来看问题,说不定很快就能解决,
我理解是在长时间定位过程中,人会疲劳,就不容易解决问题,
而且会忽略一下细节的东西,思维定式进入死胡同,
休息一段时间之后,可以更好的集中注意力,
并且思维得到了一定的转换,说不定柳暗花明呢~

7.整理总结,发布博客

将定位问题的过程记录下来,在解决之后整理成文档,
然后将其发布到自己的博客是最好不过了。
记下问题的原始信息,包括错误日志的详细信息,
然后附上详细的解决方法,以后自己遇到类似的问题就很好解决,
虽然将其发布到博客不是必须的,
但是将自己的解决方法共享出去,
既可以帮助别人,也可以帮助自己,
说不定别人能提出更好的解决方法,
过了很近之后即使自己忘记了,还可以在找到。



作者:木木与呆呆
链接:https://www.jianshu.com/p/eb20601a36a0


0人推荐
随时随地看视频
慕课网APP