程式猿解決BUG之總結
阿新 • • 發佈:2019-01-31
今天看到一遍博文(老程式設計師解Bug的通用辦法),提到程式猿解決BUG的思路和方法,結合自己的經驗總結一些;對待BUG,廣大程式猿態度不同,解決方法也不同,各人有各人的法寶,但總結一下,希望對新入行的同學有所幫助!先來張搞笑圖輕鬆一下(IT人員對待BUG的反應)^_^
PS:圖是網上扒的
- 查異常日誌
最直接的方式就是查日誌,尤其線上問題,第一步先看是否有異常日誌。包括日誌檔案和日誌系統,比如ELK中儲存分散式系統日誌;很多時候異常日誌就能反應出問題的根本原因; - 查呼叫鏈資訊
如果日誌看不出問題,可以查呼叫鏈資訊,有一些問題可能是業務問題,這就需要對業務流程較熟悉,根據使用者的ID,訂單號等一些關鍵資訊,結合業務流程和資料庫幫助定位和排查問題; - 問題(BUG)重現
如果日誌沒有反應出問題,那麼下一步可以在環境上進行重現,重現過程還是要藉助日誌資訊,不過這時候主要觀察的是實時日誌資訊(線上環境一般要把日誌級別進行下調整,比如調成INFO級別輸出日誌,當然記得解決問題後不要忘記把日誌級別調回來~),甚至可以藉助一些代理工具擷取請求碼流,輔助分析問題,碼流主要用於分析使用者請求及請求引數 - 本地環境測試或通過IDE-debug
大部分問題通過以上方法或手段都能定位到問題,那麼還有部分問題可能就需要在本地環境進行重現或通過IDE進行DEBUG,也可以通過遠端除錯方法定位問題,不過遠端除錯需要開啟遠端除錯埠且要保證遠端除錯應用的版本和原生代碼版本一致; - 增加日誌
如果本地除錯無法定位到問題,需要藉助測試環境或線上環境的,但是原有日誌無法輔助定位問題的,那麼只能增加日誌,然後打包釋出到測試環境或線上環境測試以重現問題 - 分析程式碼
也有人稱之為小黃鴨除錯法,小黃鴨不懂程式,所以我們可以向他解釋每一行程式的作用,以此來激發靈感;其實說白了就是跳脫程式猿的固有思維,以另一個角度去審視程式碼尋找BUG
PS:圖是網上扒的 - 排除法
還有一種方法就是排除法,初步排查,有點像醫生看病,縮小問題範圍以定位問題; - 環境問題
很多時候遇到一些個人感覺比較詭異的問題的時候,一般就是這個問題折騰了你很長時間了仍然沒有解決,那麼很有可能跟環境有關,比如maven快取,編譯問題等等,可以嘗試更換環境試試