bug调试宝典

bug调试技巧

宝典之一 : 坚信一个原则,程序不会说谎,必定是有缘由的

多数的错误表现看起来莫明奇妙,甚至难以想象java

但当咱们找到问题后会发现:其实问题的根源是如此简单、如此的合乎道理。nginx

这就要求咱们:api

一、保持一种淡定的心态,耐心地来查找问题curl

二、仔细看日志:工具

对着满屏幕的英文错误日志,不要慌,不认识的单词慢慢翻译,必定要仔细查找问题最初抛出的日志关键描 述。url

三、善于分析关键字spa

大部分的错误互联网上是有解决方案的,但由于搜索关键字的选择错误,致使这些解决方案不被咱们看到。翻译

必定要善于在错误日志种分析出关键的那几个“错误字眼”调试

四、相信谷歌比百度更容易找到答案日志

 

宝典之二:链路大法

程序系统,就像一张复杂的电路网,程序的调用、数据传递过程,就像电流在电路流转。

当这张网出问题时,我么顺着链路一点点的查找,总能找到问题点根源。

咱们拿一个简单的链路来举例:

 

 

 

假设如今灯泡不亮了,面临这样一个链路,在没有任何调试数据时,咱们能够说整个链路均可能是有问题的:

 

 

(用红色表示有问题的链路)

那么咱们调试的方案以下:

一、从起点开始:调试是否有电?

把正负极链接一个没有问题的灯泡(绿色表示肯定没问题):

 

 

首先咱们得找一个没有问题的灯泡来调试,若是这时还不亮,那说明电源有问题。

二、若是电源没问题,咱们再调试A点:

依次如上调试,最终咱们确定能肯定问题根源。


 

咱们把电路更换为程序链路来看一下:

 

 

同理,从入口调试开始,先调试Nginx有无问题:

一样地,咱们须要先创建一个“确信点”,就像那个“没问题的灯泡”,对于nginx来说,咱们能够创建一个最简单的server来调试:

 

 

 

若是肯定nginx没问题,咱们再依次确认A、B有无问题,有时模块的调用没法全链路调用调试,好比问题只发生在A掉B的时候,这时候curl,telnet就是咱们有力的工具了,这个时候细展开链路可能会是这样子的:

 

 

 

咱们没法确认是B服务有问题了,仍是k8s网路服务有问题了,此时咱们能够在服务B中经过curl请求本身来确认:

curl http://localhost:8080/api/xxx

  

总之,链路大法的关键是要找一个“没有问题的灯泡”去调试某个链路点,好比创建简单的nginx server节点、curl、ping等等,

经过一个咱们确认没有问题的方法,一个个去排查链路上的问题。

宝典之三:不要相信本身的猜想,眼见为实

抛弃“我觉得、我以为、我猜想”

即便是你认为没问题的链路点,也必定要亲自调试,亲眼见到才肯定

 


 

易族智汇(javashop)原创文章

相关文章
相关标签/搜索