statistical-debugging

4 posts

Crash Correlation 會說謊。以下是讓它指向真正 Bug 的方法。

統計除錯找到與當機相關的 predicates,但相關性不是檔案名稱與行號。以下是如何透過排序、過濾與三角測量,從相關分數走到真正的 bug 位置。

統計除錯給你的是一份排序過的 predicate 清單,而不是根本原因。你對每個分支與 null check 插樁,執行十萬次,然後演算法遞給你一個記分板。 的 重要性是 0.94。 的 也是 0.94。其中一個是 bug,另一個只是剛好在程式當機時總是為真。 高相關性代表 predicate 與當機同時發生。不代表…

Sentry 的 Seer 能讀懂你的 Traces。但這不代表它總是能找到根本原因。

Seer 攝取 trace tree、關聯錯誤與效能分析資料來診斷分散式問題。以下是它的實際運作方式、擅長的領域,以及仍然需要人類協助的地方。

前端拋出 500。stack trace指向一個 React 元件。真正的問題在三個服務之外,由一個洩漏的背景工作耗盡了資料庫連線池。 你可以點開 trace waterfall、關聯時間戳記、閱讀提交歷史。或者你可以把它交給 Sentry 的 Seer,一個由 LLM 驅動的除錯代理,它會讀取你的…

統計除錯本該終結 printf 除錯時代。大多數團隊卻從沒讓它跑起來。

統計除錯承諾透過將程式行為與失敗關聯來精確定位 bug。以下是這個想法為何從未從研究論文跨進生產系統的原因。

統計除錯本該終結 的時代。在程式碼中插入探針,收集數千次執行的追蹤資料,執行關聯分析,然後看著工具將每個分支與 null check 按照導致當機的可能性排序。它在 2000 年代中期的論文中運作得很漂亮。但在實務中,大多數嘗試過的團隊只得到雜訊、額外負擔,以及一個沒人信任的儀表板。…

你的測試通過了。你的資料仍然是錯的。

統計除錯將你的生產資料視為訊號,將 bug 視為異常。以下是如何在不新增任何單元測試的情況下,發現資料損毀、差一錯誤與無聲失敗的方法。

你的測試套件是全綠的。你的日誌靜悄悄。你的儀表板上沒有任何紅線。然而,3% 的使用者收到的發票總額是負數,或者你的推薦模型默默地將已刪除的產品排在最前面,或者你的聚合 pipeline 對某個時區的退款重複計算。 這些是資料 bug。它們不會拋出例外。不會讓 pod…