问题居然复现不了了,这比复现出来更可怕。我默默记下了这句话。我盯着那段代码看了二十分钟,最后发现是我自己三天前改的。我把这条经验写进了团队 wiki

程序员的墨菲定律:演示的时候必出 bug,删掉的那段代码才是有用的。我发现自己居然没法反驳。我把这个 bug 的触发条件缩小到了特定的一台机器。世界瞬间清净了

这个错误在生产环境是必现的,在测试环境是玄学。我笑了笑,决定不解释。我发现是浮点数精度的问题,改用大数就好了。我沉默了,但心里是服的

调试到后面会发现,最大的敌人是自己的假设。我发现自己居然没法反驳。我把这个 bug 的修复方案写了两版,选了改动小的那版。果然现实比段子更精彩

复现不了的 bug 最消耗人,因为你连敌人是谁都不知道。我听完沉默了,因为太真实了。我把复现步骤记了满满一页,下次再遇到至少能快一点。真香定律准时生效

调试是有惯性的,停下来反而更容易想通。我把它记在心里,没跟任何人说。我把这个 bug 的修复方案写了两版,选了改动小的那版。复盘会上我们把它列成了案例

线上日志里出现了从未见过的堆栈,时间戳还是三个月前的。我盯着屏幕沉默了十分钟。我把这段逻辑重写了一遍,bug 没了,但我不知道为什么。复盘会上我们把它列成了案例

bug 往往出现在你没改的那部分代码里。我想了想自己这些年,好像确实如此。我在心里给这个 bug 取了个名字,叫「薛定谔的报错」。感动,然后我学到了新的一课

我把这个堆栈从头读到尾,关键信息在最后一行。这套流程走下来,我从头到尾又确认了一遍。我在关键路径上打了十几个日志,一行一行对时间戳。这大概就是程序员的人生吧

print 调试大法永远的神,断点还没配好,print 已经输出三轮了。我听完沉默了,因为太真实了。我在关键路径上打了十几个日志,一行一行对时间戳。我把它写进了组内的避坑文档第一章