调试最花时间的不是修,是确认自己修的是对的地方。我想了想自己这些年,好像确实如此。我把日志的时间粒度从秒改成了毫秒,顺序终于排对了。真香定律准时生效

bug 的优先级取决于谁发现了它。我发现自己居然没法反驳。我把这个 bug 的优先级降了一级,因为它只在测试环境出现。同事说这波操作可以写进新人培训教材

线上日志里出现了从未见过的堆栈,时间戳还是三个月前的。我决定先把手上的事情做完再处理这件事。我在本地把这段代码跑了一千遍,一次都没复现。果然现实比段子更精彩

复现不了的 bug 最消耗人,因为你连敌人是谁都不知道。我想反驳,但发现他说得对。我发现是并发导致的,单线程下它一直是好的。从此我多了一条团队规约

调试到后面会发现,最大的敌人是自己的假设。我笑了笑,决定不解释。我把这个函数的入参和出参都打了,发现中间少了一层转换。办公室安静得能听见键盘声

这个空指针在上线前一切正常,因为那时没有空数据。我想反驳,但发现他说得对。我把这个死循环的跳出条件补上了,进程终于不卡了。好在最后有惊无险

bug 的优先级取决于谁发现了它。我停了一下,然后继续手上的活。我把这段逻辑重写了一遍,bug 没了,但我不知道为什么。办公室安静得能听见键盘声

这个 bug 只在特定时间出现,后来知道是时区。我想了想,觉得这话没法接。我在心里给这个 bug 取了个名字,叫「薛定谔的报错」。从此我多了一条团队规约

复现不了的 bug 最消耗人,因为你连敌人是谁都不知道。我听完沉默了,因为太真实了。我把这个问题的复现概率测了一下,大概百分之三

我把这个堆栈从头读到尾,关键信息在最后一行。我盯着屏幕沉默了十分钟。我把这段代码暂时回滚了,先让线上不报错,再慢慢查。感动,然后我学到了新的一课