尋找觸發(fā)條件屠尊,正所謂百分之百復(fù)現(xiàn)的bug都是好bug旷祸,百年不遇的bug都是上帝的恩賜。修改bug之前首先要找到bug讼昆,與測試托享、客戶溝通,現(xiàn)場試驗浸赫、還原數(shù)據(jù)庫闰围,模擬運行環(huán)境等等動用一切力量,不惜一切代價找尋bug的觸發(fā)條件既峡,找到bug觸發(fā)條件就說明修改bug已經(jīng)成功一半了(PS:此處可能會有驚喜羡榴,沒準(zhǔn)不是你寫的代碼有問題,是運行環(huán)境涧狮、硬件設(shè)備等問題)炕矮。
? ? ? ? 在調(diào)試前還需要先收集對調(diào)試有利的信息,比如log日志等者冤,這樣就比較容易快速定位到bug位置肤视,可以起到事半功倍的效果。接下來就開始調(diào)試代碼涉枫,如果有l(wèi)og日志就可以直接定位到錯誤的代碼行debug下邢滑,根據(jù)錯誤信息修改bug,如果沒有l(wèi)og日志愿汰,那么就準(zhǔn)備持久戰(zhàn)吧困后。
????????首先可以利用二分查找法,這里多適用于多表聯(lián)查sql語句中使用衬廷,當(dāng)然代碼也可以摇予,也就注掉一部分代碼或者幾個關(guān)聯(lián)表,慢慢找到有問題的代碼塊或數(shù)據(jù)庫表吗跋,找到出問題的癥結(jié)點侧戴。這個方法適用于不明確bug出現(xiàn)在哪里宁昭,效率頗高。
????????接下來就是斷點調(diào)試了酗宋,debug的出現(xiàn)使程序員減少了很多負(fù)擔(dān)积仗,尋找bug效率大幅度提升,debug可以使我們思路清晰蜕猫,步步為營寂曹,如果代碼有問題,debug一定會捕捉到回右,正所謂不會debug的程序員不是好程序員隆圆。
????????當(dāng)然還有種業(yè)務(wù)邏輯錯誤的,對于我們來說可以試試了解下業(yè)務(wù)邏輯楣黍,然后和代碼對比匾灶,看看哪里不一樣,還有高手們是可以直接在業(yè)務(wù)邏輯中發(fā)現(xiàn)錯誤的租漂。
還有一部分比如歷史遺留bug阶女,我們是修改bug的,改的同時還要挖新的坑哩治,補(bǔ)丁秃踩、版本都是上古時代的代碼,這種千瘡百孔的程序业筏,我們在時間上允許的話可以重寫憔杨。重寫代碼同樣適用于邏輯不是很多、業(yè)務(wù)簡單的程序中蒜胖,往往重寫比修改效果更好消别。
? ? ? ? 最后就是終極調(diào)試大法:小黃鴨調(diào)試法(又稱橡皮鴨調(diào)試法,黃鴨除蟲法台谢,傳說中的大師都是隨身攜帶小黃鴨的寻狂,遇到bug就向小黃鴨解釋每一行代碼的用處,可能講到一半就靈光乍現(xiàn)朋沮,bug灰飛煙滅蛇券。通常就是你遇到bug解決不掉就向同事傾訴,剛說到一半突然就發(fā)現(xiàn)問題出現(xiàn)在哪里了樊拓,回去修改bug留下一臉懵逼的同事在風(fēng)中凌亂纠亚。但是在程序員中,同事是習(xí)慣了的筋夏,這就是小黃鴨的作用蒂胞。
https://mp.weixin.qq.com/s/drCt3pNNMcLha-9HHyCYJg