敲代碼出現bug後無法準確識別問題所在,或者知道是這裡出了問題,但又不知道如何修改,這時候各位一般怎麼辦呢?

如果看了別人的代碼,知道這裡缺少了一句,加上後確實正常了,但是無法理解為什麼少了這句程序就不行了,相當於有個知識點沒掌握好,但又很難描述差在哪,自己該如何處理這種情況呢?


瀉藥

我的經歷是如果在線上的話,功能屏蔽。

如果不在線上的話,花更長時間處理。


調試bug最好的方式就是下斷點,單步跟蹤查看每個變數在語句中的變化,比如說 int a =SomeFunc(b);//正常情況下函數名應該清晰易懂。

假設你不知道這個這個函數具體做了什麼,可能是調用了某些dll裡面的,那你就去搜一下,沒有的話你可以用不同的數據輸入看看輸出是什麼猜一下,如果你不會反編譯的話


找不到bug就去睡覺,睡醒就找到了。

還找不到就逐步調試。把每一行應該的值和實際的值都對比下。

加上一句就對了,但是不知道為啥,那就說明自己壓根不會這東西。Google學習下,學會回來再看


大黃鴨調試法


下斷點,單步調試,Bug場景復現

當然這建立在你懂每一句幹了啥

至於每一句幹了啥,API的話查手冊,剩下的多看看就懂了


bug修不好,我說明原有思路是錯誤的或者轉了牛角尖。 嘗試換一種思路去解決問題。真的不可以的話就閃酷拋路吧哈哈


查數據,檢查數據有效性,測試用臟數據測出來的bug,甩回給他。

有條件的話就單步調試。最有效的就它。

沒條件的話就打日誌,看日誌,逐步縮小範圍。連日誌都沒有,可能出core了,用gbd。

只有這些步驟都做了,把問題縮小到了相當的地步,才有資格去請大神。如果數據有效性得不到驗證(即不能還原現場),又不能重現,不能單步調試,日誌也沒有,core沒有,什麼都沒有。那我會選擇把提出bug的人解決掉。

如果是自己的項目,死磕到底,網上查資料,很可能最終網上查到的東西還是沒有幫上忙,但是不要小看查找的過程,途中會遇到很多新知識點,哪怕僅僅是了解,也是大有好處的。

如果是工作上的項目,等不起的,找大神吧,大神搞不定的,找更牛逼的大神。我最近遇到一個bug就是找了好幾個大牛才解決。當然不是我找的,是我的上司去找的。


推薦閱讀:
相关文章