调试到后面会发现,最大的敌人是自己的假设。我默默记下了这句话。我发现是浮点数精度的问题,改用大数就好了。感动,然后我学到了新的一课

print 调试大法永远的神,断点还没配好,print 已经输出三轮了。我把它记在心里,没跟任何人说。我在心里给这个 bug 取了个名字,叫「薛定谔的报错」

加了二十行 console.log 之后,Bug 消失了,删除它们,Bug 又回来了。我先确认了一遍前置条件,再动手。我把这个报错的堆栈从头读到尾,发现在最后一行有个提示。从此我多了一条团队规约

调试了两天的 bug,最后发现是少打了一个等号。我在心里把涉及的所有环节都过了一遍。我把这个问题交给了上游,他们说是我们的调用方式不对。第二天这个方案就变成了团队标准做法

这个报错信息指向的位置和真正的错误隔了三层。我把它记在心里,没跟任何人说。我把这个问题交给了上游,他们说是我们的调用方式不对。从此我多了一条团队规约

调试到后面会发现,最大的敌人是自己的假设。我不知道该说什么,就笑了笑。我在生产环境复现了一次,代价是一个小时的下线。复盘会上我们把它列成了案例

print 调试大法永远的神,断点还没配好,print 已经输出三轮了。我盯着屏幕,觉得这才是我的一天。我最后发现是一个大小写问题。连茶水间都安静了

这个 bug 只在特定时间出现,后来知道是时区。我想反驳,但发现他说得对。我用了二分法把出问题的版本区间缩到了两个提交。我沉默了,但心里是服的

bug 往往出现在你没改的那部分代码里。我忽然觉得,这可能就是这一行的常态。我发现这个问题只在周一早上出现,后来知道是定时任务。第二天这个方案就变成了团队标准做法

线上日志里出现了从未见过的堆栈,时间戳还是三个月前的。我把手上的资料翻出来又读了两遍。我把这个报错的堆栈从头读到尾,发现在最后一行有个提示。复盘会上我们把它列成了案例