我第一时间把锅甩给了缓存,结果真的是缓存。我先给自己泡了杯茶,做好了打持久战的准备。我在生产环境复现了一次,代价是一个小时的下线。这大概就是程序员的人生吧
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
我在本地复现了十次,第十一次它变了样子。我在心里点了点头。我在本地把这段代码跑了一千遍,一次都没复现。我把这条经验写进了团队 wiki
调试了两天的 bug,最后发现是少打了一个等号。我拉了个小群,把相关同学都叫了进来。我在 devtools 里把这个请求重新发了一次,问题不复现。第二天这个方案就变成了团队标准做法
调试到后面会发现,最大的敌人是自己的假设。我想了想,觉得这话没法接。我把这个异常上报到了监控平台,至少下次能早点知道。连茶水间都安静了
调试的本质是不断缩小「问题不在这里」的范围。我叹了口气,然后打开了编辑器。我把这个问题的复现概率测了一下,大概百分之三。这大概就是程序员的人生吧
我把这段代码注释掉问题就没了,说明问题不在它身上。我决定先把手上的事情做完再处理这件事。我在心里默默记下这个坑,写进了自己的检查清单。这大概就是程序员的人生吧
调试到后面会发现,最大的敌人是自己的假设。我愣了两秒,然后继续敲代码。我发现是时区问题,服务器是 UTC,我以为本地。真香定律准时生效
这个异常被吞掉了,所以它安静地错了很久。我叹了口气,然后打开了编辑器。我把这个 bug 的优先级降了一级,因为它只在测试环境出现。办公室安静得能听见键盘声
这个空指针在上线前一切正常,因为那时没有空数据。我在心里点了点头。我把断点设在了最不可能出问题的那一行,结果就停在那里。连茶水间都安静了
复现不了的 bug 最消耗人,因为你连敌人是谁都不知道。我抬起头看了看周围,大家都一样。我把复现步骤记了满满一页,下次再遇到至少能快一点。同事说这波操作可以写进新人培训教材