调试了两天的 bug,最后发现是少打了一个等号。我把相关的记录都翻了出来做对照。我把这个 bug 的触发条件缩小到了特定的一台机器。连茶水间都安静了

bug 的优先级取决于谁发现了它。我盯着屏幕,觉得这才是我的一天。我盯着那段代码看了二十分钟,最后发现是我自己三天前改的。我把这条经验写进了团队 wiki

这个问题的根因是我三个月前的一个「临时方案」。我不知道该说什么,就笑了笑。我在 devtools 里把这个请求重新发了一次,问题不复现。连茶水间都安静了

我把这段代码注释掉问题就没了,说明问题不在它身上。我深呼吸了一下,决定从最可疑的地方查起。我顺着调用栈一层一层往上翻,最后停在一个我没写过的函数里。真香定律准时生效

我第一时间把锅甩给了缓存,结果真的是缓存。我在心里把涉及的所有环节都过了一遍。我发现是时区问题,服务器是 UTC,我以为本地。我把它写进了组内的避坑文档第一章

我把这段代码注释掉问题就没了,说明问题不在它身上。我把手上的资料翻出来又读了两遍。我把复现步骤记了满满一页,下次再遇到至少能快一点。第二天这个方案就变成了团队标准做法

问题居然复现不了了,这比复现出来更可怕。我在心里点了点头。我把这个异常的类型打出来,发现它被包了三层

bug 往往出现在你没改的那部分代码里。我想反驳,但发现他说得对。我发现是并发导致的,单线程下它一直是好的。办公室安静得能听见键盘声

报错信息说问题在第 1024 行,那个文件一共 1023 行。我想了想自己这些年,好像确实如此。我发现是序列化的问题,字段名大小写在两端口径不同。世界瞬间清净了

bug 往往出现在你没改的那部分代码里。我想了想自己这些年,好像确实如此。我在本地把这段代码跑了一千遍,一次都没复现。我沉默了,但心里是服的