debugging
5 篇文章
當機的驗屍課(上):先學會看一具程式的屍體
用「命案調查」的方式學程式怎麼當機。這是三部曲的第一課:先搞懂 CPU、stack、回程地址、segfault 是什麼——之後才驗屍、抓兇手。每層樓一個測驗,答對才能上樓。
當機的驗屍課(中):法醫救不了你,要找的是流行病學家
當機驗屍三部曲第二課。進到命案現場(core dump),學會什麼是封鎖線(red zone)、第一個趕到現場的人(signal handler);然後把「法醫」升級成「流行病學家」——用全城族群資料,一舉破掉兩樁命案裡的第一樁:一口毒井(壞掉的主機)。
當機的驗屍課(下):抓住那隻 18 歲的鬼
當機驗屍三部曲完結篇。剩下那群「return 到 NULL」的命案,兇手是 GNU libunwind 藏了 18 年的競態條件——一個只有一條指令寬(約 100 皮秒)的完美作案窗。看兇器怎麼下手、用費米估算對帳發病率、以及為何這隻鬼躲了 18 年才現身。
一個凌晨六點的 DNS 慘案 — 當 Ubuntu 自動更新把整個 sandbox 炸了
Cowork 團隊遇到凌晨六點的錯誤暴增,一路追查下來,發現是 Ubuntu 自動安全更新觸發 systemd-resolved 重啟、覆寫 resolv.conf、摧毀 gVisor sandbox 的 DNS 設定,再加上 Bun/axios 把 SERVFAIL 誤報成 ECONNRESET,組成了一個完美的 nondeterministic bug。
我的 AI 助手一直失憶:花了 5 天 Debug OpenClaw Agent 記憶系統的血淚筆記
Indie hacker Ramya 的 OpenClaw agent 一直忘事。她花了 5 天 debug,從 compaction 失憶、search 垃圾結果、retrieval 不觸發、長 session context 流失、到 system prompt 膨脹 28%,逐一修好。最後整理出 10 條 OpenClaw 記憶系統的血淚教訓。