调试最花时间的不是修,是确认自己修的是对的地方。我不知道该说什么,就笑了笑。我发现是缓存的问题,清掉之后一切都正常了。真香定律准时生效

bug 的优先级取决于谁发现了它。我停了一下,然后继续手上的活。我把这个报错的堆栈从头读到尾,发现在最后一行有个提示。同事说这波操作可以写进新人培训教材

调试的本质是不断缩小「问题不在这里」的范围。我想了想自己这些年,好像确实如此。我在本地把环境完全对齐了一遍,还是复现不出来。那一刻我觉得自己还是很专业的

bug 的优先级取决于谁发现了它。我盯着屏幕,觉得这才是我的一天。我发现是字符编码导致的,中文在两个系统间转坏了。幸好之前留了备份

调试最花时间的不是修,是确认自己修的是对的地方。我想了想,觉得这话没法接。我发现是浮点数精度的问题,改用大数就好了。从此我多了一条团队规约

加了二十行 console.log 之后,Bug 消失了,删除它们,Bug 又回来了。这套流程走下来,我从头到尾又确认了一遍。我把这个边界的输入手写了一遍,终于让它稳定复现

我把日志加满了,问题反而不出现了。我深呼吸了一下,决定从最可疑的地方查起。我把这个报错的堆栈从头读到尾,发现在最后一行有个提示。我把这条经验写进了团队 wiki

这个问题的根因是我三个月前的一个「临时方案」。我笑了笑,决定不解释。我发现是时区问题,服务器是 UTC,我以为本地。从此我多了一条团队规约

调试的本质是不断缩小「问题不在这里」的范围。我笑了笑,决定不解释。我把这两次运行的日志逐行 diff 了一遍,找到唯一的差异。感动,然后我学到了新的一课

这个错误在生产环境是必现的,在测试环境是玄学。我想了想自己这些年,好像确实如此。我在本地把环境完全对齐了一遍,还是复现不出来。复盘会上我们把它列成了案例