第二十三章 調試學習
1.調試概述測試
.開發高質量軟件產品的最佳途徑是精確描述需求,完善設計,並使用高質量的代碼編寫規範,調試只是無可奈何時候才使用的手段。spa
.調試軟件,能夠從錯誤中學習不少東西:例若有助於理解程序、明確所犯下錯誤的類型、從閱讀者的角度分析代碼質量、審視本身解決問題的方法等。設計
2.尋找缺陷調試
一種尋找缺陷的有效方法:開發
a)將錯誤狀態穩定下來。(即保證bug可重現)產品
b)肯定錯誤的來源。(收集產生缺陷的數據->分析數據給出假設->證明或證僞假設->得出最終結論)it
c)修補缺陷。cli
d)對修補的地方進行測試。軟件
e)檢查是否還有相似的錯誤。
3.修正缺陷
(1)動手以前理解問題。(先搞清楚問題再動手)
(2)理解程序自己而不單單是問題。(至少應當理解問題附近的代碼)
(3)驗證對錯誤的分析。
(4)保存最初的源代碼。(至少知道修改了哪些地方)
(5)治本而不是治標。
應當使用一種可以在深層次上解決問題的方法,而不是用「代碼繃帶」去暫時解決問題。
例如:
for(claimNumber = 0; claimNumber < numClaims[client];claimNumber++)
{
sum[client] = sum[client] + claimAmount[claimNumber];
}
假設當client等於45的時候,sum得出的結果有3.45的偏差,則採用以下的修補方法就是隻治標的方法:
for(claimNumber = 0; claimNumber < numClaims[client];claimNumber++)
{
sum[client] = sum[client] + claimAmount[claimNumber];
}
if(client==45)
{
sum[45] +=3.45;
}
(6)修改代碼必定要有恰當的理由。
(7)一次只作一個改動。
(8)檢查本身的改動。
(9)注意調試中的心理因素(具體看參見《程序開發心理學》)
(未完待續。。。。正在閱讀PHP調試手冊,後有補充)