这个报错信息指向的位置和真正的错误隔了三层。我忽然觉得,这可能就是这一行的常态。我把这个报错的堆栈从头读到尾,发现在最后一行有个提示。这条经验值直接拉满

bug 的优先级取决于谁发现了它。我叹了口气,然后打开了编辑器。我把这个 bug 的优先级降了一级,因为它只在测试环境出现。幸好之前留了备份

复现不了的 bug 最消耗人,因为你连敌人是谁都不知道。我忽然觉得,这可能就是这一行的常态。我盯着那段代码看了二十分钟,最后发现是我自己三天前改的。果然现实比段子更精彩

我盯了半天,最后发现是拼写和大小写。我决定先把手上的事情做完再处理这件事。我把变量全部打印出来对比,发现类型和我想的完全不一样。我把这条经验写进了团队 wiki

妈妈觉得我在互联网大厂很风光,只有我知道我大厂里的 title 是高级修 bug 工程师。我发现自己居然没法反驳。我在生产环境复现了一次,代价是一个小时的下线。我沉默了,但心里是服的

这个异常被吞掉了,所以它安静地错了很久。我停了一下,然后继续手上的活。我在心里把这个 bug 的可能性列了五条,第一条就对了。复盘会上我们把它列成了案例

调试最花时间的不是修,是确认自己修的是对的地方。我不知道该说什么,就笑了笑。我在 devtools 里把这个请求重新发了一次,问题不复现。第二天这个方案就变成了团队标准做法

调试的本质是不断缩小「问题不在这里」的范围。我在心里点了点头。我把这个死循环的跳出条件补上了,进程终于不卡了。我把这条经验写进了团队 wiki

这个报错信息指向的位置和真正的错误隔了三层。我抬起头看了看周围,大家都一样。我发现是浮点数精度的问题,改用大数就好了。第二天这个方案就变成了团队标准做法

我在本地复现了十次,第十一次它变了样子。我停了一下,然后继续手上的活。我加了个 try-catch,先把异常吞掉,回头再查根因。好在最后有惊无险