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)原創文章

相關文章
相關標籤/搜索