bug 往往出现在你没改的那部分代码里。我听完沉默了,因为太真实了。我在本地把这段代码跑了一千遍,一次都没复现。真香定律准时生效

这个错误在生产环境是必现的,在测试环境是玄学。我盯着屏幕,觉得这才是我的一天。我在本地把这段代码跑了一千遍,一次都没复现。世界瞬间清净了

同事说他写的代码零 bug,我在 code review 里找到了三个空指针风险。我打开记录从头到尾扫了一遍。我在心里给这个 bug 取了个名字,叫「薛定谔的报错」。我沉默了,但心里是服的

调试最花时间的不是修,是确认自己修的是对的地方。我在心里点了点头。我把变量全部打印出来对比,发现类型和我想的完全不一样。好在最后有惊无险

妈妈觉得我在互联网大厂很风光,只有我知道我大厂里的 title 是高级修 bug 工程师。我把它记在心里,没跟任何人说。我顺着调用栈一层一层往上翻,最后停在一个我没写过的函数里。连茶水间都安静了

调试最花时间的不是修,是确认自己修的是对的地方。我听完沉默了,因为太真实了。我发现这个字段在数据库里存量是脏的,代码没问题。办公室安静得能听见键盘声

同事说他写的代码零 bug,我在 code review 里找到了三个空指针风险。我深呼吸了一下,决定从最可疑的地方查起。我把这个问题的复现概率测了一下,大概百分之三。世界瞬间清净了

问题居然复现不了了,这比复现出来更可怕。我盯着屏幕,觉得这才是我的一天。我把这段代码暂时回滚了,先让线上不报错,再慢慢查。我把它写进了组内的避坑文档第一章

我把这个堆栈从头读到尾,关键信息在最后一行。我打开记录从头到尾扫了一遍。我最后发现是一个大小写问题。从此我多了一条团队规约

线上日志里出现了从未见过的堆栈,时间戳还是三个月前的。我重新看了一遍手上的计划,把风险项标了出来。我加了个 try-catch,先把异常吞掉,回头再查根因。办公室安静得能听见键盘声