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.整理總結,發佈博客

將定位問題的過程記錄下來,在解決之後整理成文檔,
然後將其發佈到自己的博客是最好不過了。
記下問題的原始信息,包括錯誤日誌的詳細信息,
然後附上詳細的解決方法,以後自己遇到類似的問題就很好解決,
雖然將其發佈到博客不是必須的,
但是將自己的解決方法共享出去,
既可以幫助別人,也可以幫助自己,
說不定別人能提出更好的解決方法,
過了很近之後即使自己忘記了,還可以在找到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章