憑空想象,問題的原因很多,實際的原因只有看了才能發現! 如果猜測失敗是如何發生的,那麼常常會修復一些不是bug的問題,不僅浪費時間、還會破壞其它地方,因此不要這樣做。 在醫學領域,有聽診器、抽血化驗、x透視、b超等方法。同樣 在軟體中,觀察的方法有設定斷點、新增除錯語句、監視程式值、以及檢查記憶體等方法。硬體方法有通過示波器、邏輯分析儀、示波器等工具測試訊號、時序和線路阻抗等方式。當錯誤的假設別否定後,找到bug的工作量和之前相比一樣多,但是給你時間變少了,因此必須依靠下面的原則進行。
1、觀察失敗
發現bug時,看到是其實是失敗的結果,你必須仔細觀察,找到足夠多的細節,才能除錯它。如果不留意發生的全過程,可能導致你曲解很多問題,修復錯誤的地方,更糟的是可能由於時序改變,真正問題被隱藏起來,導致誤以為bug已修復。
2、檢視細節
3、植入插樁工具
開發過程中,可以採用軟體單步跟蹤、插入斷點的方式進行除錯;發行後,就只能在監視器中輸入有意義的變數,以便執行時觀察,在任何狀態,都應該開啟乙個除錯視窗,並且讓**輸出狀態資訊,在pc、伺服器中,往往利用執行日誌。在嵌入式系統中,通常使用串列埠和pc機通訊,利用上位機監控運作狀態。 最好的方法是,從開始設計就考慮除錯的問題,把插樁作為產品需求一部分。這有助於後期的除錯、在思考**需要插樁時,還有助於更好的設計系統並避免bug。 無論設計時考慮的如何周到,開始除錯後總會有些無法預料的情況。因此,不必擔心,只需在必要時對系統進行插樁即可,需要注意的是,植入插樁工具後,要使失敗再次發生,而且確保對問題沒有影響,找到問題並解決後,要**插樁,以便不影響最終產品。
4、新增外部插樁工具
當除錯硬體時,可以使用萬用表、示波器、邏輯分析儀、頻譜儀等其它儀器觀察硬體。需要注意的時,所有儀器必須要有足夠的速度和精確度,以便能夠測量到錯誤,比如如果使用頻寬200m的示波器,就無法觀察230m的訊號飽和變形的問題。
5、不要害怕深入研究
如果**有bug,為了修復它,需要重新構建軟體,首先構建乙個除錯版本,新增除錯語句以檢視需要檢視的的引數,修復後,使用#ifdef 標記所有除錯語句並重新交付產品**。
6、注意海森堡效應
海森堡效應,在量子領域為測不准原理,因此任何插樁都可能影響原有的系統,比如示波器的探針增加了電路的電容,不同的軟體版本,可能軟體執行時間和規模會有不同,開啟機箱蓋子,會改變內部零部件的溫度等。因此必須在插樁後,使系統再次失敗,以確保未被海森堡效應所困。
7、猜測只是為了確定搜尋的重點
軟硬體除錯九法 第六條規則 保持審計跟蹤
1 把你的操作 操作順序和結果全部記錄下來 要記錄所做的事 做事的順序 以及發生的結果,每次做完都要全部記錄。就像除錯硬體一樣,必須指導每個步驟以及執行結果,才能確定下一步關注的重點。2 要知道,任何細節都可能是重要的 有時bug報告可能就有一句簡單的話,比如儀器顯示出錯了,或者儀器無法正常工作,這...
除錯九法 軟硬體錯誤的排查之道
理解系統 這是第一條股則,因為它是最重要的。製造失敗 雖然看起來很簡單,但如果不製造失敗的話,除錯就會變得很困難。不要想,而要看 憑空想象,問題可能有幾千條原因。而實際原因只有去看了才能發現。分而治之 當bug的藏身之地不斷被縮小一半時,它將很難再隱藏下去。一次只改乙個地方 我們在生活中要有一點先見...
《除錯九法 軟硬體錯誤的排查之道》簡要
本書的主旨不在預防 保證或篩選,將教給你如何準備查詢bug,如何挖掘並仔細審查各種線索,以便找到根源,追蹤實際問題,並修復它,然後確認你已經修復問題。雖然本書介紹的方法和系統都是通用的,但它們都緊緊圍繞乙個重點,那就是查詢bug 的根源並修復。規則l 理解系統 規則2 製造失敗 規則3 不要想,而要...