談起程序調(diào)試這件事情。調(diào)試是確定錯誤原因并糾正此錯誤的過程,跟測試不同,測試是檢測錯誤的過程,在一些項目中,調(diào)試可能占到整個開發(fā)周期的50%。說到錯誤,那肯定離不開“bug”這個詞,已故的海軍少將Grace Hopper,COBOL的發(fā)明者之一,堅信“bug”一詞可以追溯到第一臺大型數(shù)字計算機,即Mark I,程序員在一次解決電路故障的時候看到一只大飛蛾,并發(fā)現(xiàn)這只飛蛾飛到了計算機里面,從此計算機故障就被歸咎于“bug/蟲子”了。
為什么要說調(diào)試這件事,看似簡單,每個程序員都會做的一件事情,但是能不能做好就是另外一回事了。一項研究表明,針對同樣一組缺陷,經(jīng)驗豐富的程序員找出缺陷所用的時間大約只是缺乏經(jīng)驗的程序員們的1/20。
通過調(diào)試,我們可以找出代碼缺陷所在,代碼里面有缺陷意味著什么,如果你希望代碼里面一個缺陷都沒有,那意味著你還沒有完全理解程序的功能,我們可以從代碼中出現(xiàn)的bug得到以下這些好處:
1.理解你正在編寫的程序
2.明確你犯了哪種類型的錯誤
3.從代碼閱讀者的角度分析代碼質(zhì)量
4.審視自己解決問題的方法
5.審視自己修正缺陷的方法
常見的低效率的調(diào)試方法:
1.憑猜測找出缺陷
2.不要把時間浪費在理解問題上
在運用科學的調(diào)試方法時,會經(jīng)歷下面這些過程:
1.通過可重復的試驗收集數(shù)據(jù)
2.根據(jù)相關數(shù)據(jù)的統(tǒng)計構造一個假說
3.設計一個實驗來證明或者反正這個假說
4.根據(jù)需要重復進行上面的步驟
尋找缺陷的有效方法:
1.將錯誤狀態(tài)穩(wěn)定下來
2.確定錯誤的來源
3.修補缺陷
4.對所修補的地方進行測試
5.查找是否還有類似的錯誤