以下摘錄自《調(diào)試九法:軟硬件的錯誤排查之道》
調(diào)試規(guī)則
- 理解系統(tǒng)
- 制造失敗
- 不要想,而要看
- 分而治之
- 一次只改一個地方
- 保持審計跟蹤
- 檢查插頭
- 獲得全新觀點
- 如果你不修復(fù)bug瑟枫,它將依然存在
理解系統(tǒng)
這是第一條規(guī)則枫浙,因為它是最重要的询筏。
- 閱讀手冊
- 仔細(xì)閱讀每個細(xì)節(jié)
- 掌握基礎(chǔ)知識
- 了解工作流程
- 了解工具
- 查詢細(xì)節(jié)
制造失敗
雖然看起來很簡單绵脯,但如果不制造失敗的話渊迁,調(diào)試就會變得很困難拧揽。
- 制造失敗
- 從頭開始
- 引發(fā)失敗
- 但不要模擬失敗
- 查找不受你控制的條件(正是它導(dǎo)致了間歇性失斕甓堋)
- 記錄每件事情,并找到間歇性bug的特征
- 不要過于相信統(tǒng)計數(shù)據(jù)
- 要認(rèn)識到“那”是可能會發(fā)生的
- 永遠(yuǎn)不要丟掉一個調(diào)試工具
不要想淤袜,而要看
憑空想象痒谴,問題可能有幾千條原因。而實際的原因只有去看了才能發(fā)現(xiàn)铡羡。
- 觀察失敗
- 查看細(xì)節(jié)
- 植入插裝工具
- 添加外部插裝工具
- 不要害怕深入研究
- 注意海森堡效應(yīng)
- 猜測只是為了確定搜索的重點
分而治之
當(dāng)bug的藏身之地不斷被縮小一半時积蔚,它將很難再隱藏下去。
- 通過逐次逼近縮小搜索范圍
- 確定范圍
- 確定你位于bug的哪一側(cè)
- 使用易于查看的測試模式
- 從有問題的一端開始搜索
- 修復(fù)已知bug
- 首先消除噪聲干擾
一次只改一個地方
我們在生活中要有一點先見之明烦周。如果你所做的更改沒有起到預(yù)期的作用尽爆,那么就把它改回來怎顾。它們可能會產(chǎn)生無法預(yù)料的影響。
- 隔離關(guān)鍵因素
- 用雙手抓住黃銅桿
- 一次只改一個測試
- 與正常情況進行比較
- 確定自從上一次正常工作以來你改變了什么地方
保持審計跟蹤
不要只是在心里記住“保持審計跟蹤”這條規(guī)則漱贱,而要把它寫下來槐雾。
- 把你的操作、操作的順序和結(jié)果全部記錄下來
- 要知道饱亿,任何細(xì)節(jié)都可能是重要的
- 把事件關(guān)聯(lián)到一起
- 用于設(shè)計的審計跟蹤在測試中也非常有用
- 把事情記錄下來蚜退!
檢查插頭
一些顯而易見的假設(shè)往往是錯誤的。請恕我贅述彪笼,假設(shè)錯誤通常是最容易修復(fù)的錯誤钻注。
- 質(zhì)疑你的假設(shè)
- 從頭開始
- 對工具進行測試
獲得全新觀點
不管怎樣,你都需要休息一下配猫,喝杯咖啡幅恋。
- 征求別人的意見
- 獲取專業(yè)知識
- 聽取別人的經(jīng)驗
- 幫助無處不在
- 放下面子
- 報告癥狀,而不要講你的理論
- 你提出的問題不必十分肯定
如果你不修復(fù)bug泵肄,它將依然存在
現(xiàn)在你已經(jīng)掌握了所有的技術(shù)捆交,沒有理由再讓bug存在了。
- 查證問題確實已被修復(fù)
- 查證確實是你的修復(fù)措施解決了問題
- 要知道腐巢,bug從來不會自己消失
- 從根本上解決問題
- 對過程進行修復(fù)
**從幫助臺得到的觀點是不明確的
只能通過遠(yuǎn)程方式了解問題品追,眼睛和耳朵接收到的信息并不十分準(zhǔn)確,而且關(guān)鍵是時間緊迫冯丙。
- 遵循規(guī)則肉瓦。 無論用戶多么糊涂,都必須找到應(yīng)用規(guī)則的途徑胃惜。
- 對行動和結(jié)果加以確認(rèn)泞莉。 用戶會誤解你的意思,同時會犯錯誤船殉。通過確認(rèn)他們所說和所做的一切可以及早發(fā)現(xiàn)這些問題鲫趁。
- 使用自動工具。 不要讓用戶參與系統(tǒng)生成的日志和遠(yuǎn)程監(jiān)控與控制工具利虫。
- 即使是最簡單的假設(shè)也需要確認(rèn)挨厚。 是的,有些人就是不知道有電才能使用字處理器列吼。
- 使用可用的故障檢修指南幽崩。 要處理的很可能就是已知的、好的設(shè)計寞钥。不要忽略歷史。
- 幫助完善故障檢修指南陌选。 如果找到了某個已知系統(tǒng)的一個新問題理郑,將解決問題的所有內(nèi)容進行歸檔可以幫助下一位支持人員蹄溉。