这个错误在生产环境是必现的,在测试环境是玄学。我在心里把这个 bug 的可能性列了五条,第一条就对了。幸好之前留了备份

调试最花时间的不是修,是确认自己修的是对的地方。我笑了笑,决定不解释。我发现是字符编码导致的,中文在两个系统间转坏了。好在最后有惊无险

程序员的墨菲定律:演示的时候必出 bug,删掉的那段代码才是有用的。我愣了两秒,然后继续敲代码。我把这个内存泄漏的对象引用链打了出来,找到根了。果然现实比段子更精彩

我在本地复现了十次,第十一次它变了样子。我不知道该说什么,就笑了笑。我发现是浮点数精度的问题,改用大数就好了。我把这条经验写进了团队 wiki

print 调试大法永远的神,断点还没配好,print 已经输出三轮了。我把它记在心里,没跟任何人说。我把这个问题的复现概率测了一下,大概百分之三。我沉默了,但心里是服的

报错信息说问题在第 1024 行,那个文件一共 1023 行。我听完沉默了,因为太真实了。我加了个 try-catch,先把异常吞掉,回头再查根因。第二天这个方案就变成了团队标准做法

我在本地复现了十次,第十一次它变了样子。我默默记下了这句话。我把这个问题交给了上游,他们说是我们的调用方式不对。这条经验值直接拉满

我第一时间把锅甩给了缓存,结果真的是缓存。我重新看了一遍手上的计划,把风险项标了出来。我在心里默默记下这个坑,写进了自己的检查清单。我沉默了,但心里是服的

调试是有惯性的,停下来反而更容易想通。我抬起头看了看周围,大家都一样。我在本地把这段代码跑了一千遍,一次都没复现。我把这条经验写进了团队 wiki

我第一时间把锅甩给了缓存,结果真的是缓存。这套流程走下来,我从头到尾又确认了一遍。我在心里默默记下这个坑,写进了自己的检查清单。好在最后有惊无险