除錯診斷
建立快速、具體的通過/失敗訊號,再形成強烈假設。從命令、輸出、追蹤與儲存的工件中移除機密資訊。
循環
- 重現。 撰寫一條能到達使用者確切症狀,且可因該 Bug 而失敗的命令。若無緊湊的重現方式,請參閱 references/feedback-loop.md。
- 最小化。 逐一移除輸入、步驟、呼叫者與組態。只保留失敗所需的部分。
- 假設。 列出 3-5 個有優先順序、可證偽的原因。針對每個原因,說明哪些觀察結果可確認或推翻它。
- 探測。 一次只改變一個變數。偏好使用除錯器或在邊界處進行集中式儀控。使用獨特
[DEBUG-...]前綴標記暫時的日誌。 - 鎖定修復。 將最小的真實重現轉換為在正確公開接縫上的回歸測試。套用最小的修復。重新執行測試與原始重現。
- 清理。 移除暫時性的儀控與測試框架。回報原因、證據、修復方式以及任何殘留的覆蓋缺口。
規則
- 若兩次修復嘗試失敗,則停止。在嘗試另一個修補前,重新檢查假設或設計。不要堆疊猜測。
- 對於效能回歸,在變更程式碼前先測量基準並進行剖析或二分搜尋。僅憑日誌無法作為效能診斷。
- 若無正確的測試接縫,請明確說出。修復後,使用
$codebase-design判斷該缺失的接縫是否需要結構性調整。 - 只有當原始症狀消失且回歸檢查通過時,才能宣告成功。