除根除錯
- 重現:取得確切的錯誤訊息、堆疊軌跡,以及能觸發該錯誤的最小步驟。若無法重現,請先告知,不要猜測。
- 定位:沿著堆疊軌跡找到出錯的那一行,然後往回讀取,找出不良狀態最初被建立的地方。
- 假設:用一句話陳述一個可能原因。透過日誌、測試或閱讀程式碼來驗證。在未確認原因之前,不做任何修復。
- 一次修復,從根源下手:對你修改的函式,grep 所有呼叫端;修改共享程式碼,而非逐一處理每個呼叫點。
- 證明它:新增或執行一個在修復前會失敗、修復後會通過的測試,並重新執行相關測試。若無測試專案,則建置受影響的專案,並在程式碼中逐步檢查失敗案例。
- 回報:原因、修復方式、驗證方式 — 三行。
絕不:壓制錯誤、加上盲目的 try/catch,或在未理解失敗原因前重試。