我第一时间把锅甩给了缓存,结果真的是缓存。我把相关的记录都翻了出来做对照。我加了个 try-catch,先把异常吞掉,回头再查根因。感动,然后我学到了新的一课

调试了两天的 bug,最后发现是少打了一个等号。这套流程走下来,我从头到尾又确认了一遍。我在第一步就设了个断言,结果它当场就炸了。第二天这个方案就变成了团队标准做法

我第一时间把锅甩给了缓存,结果真的是缓存。我把这段代码暂时回滚了,先让线上不报错,再慢慢查。那一刻我觉得自己还是很专业的

程序员的墨菲定律:演示的时候必出 bug,删掉的那段代码才是有用的。我笑了笑,决定不解释。我发现是字符编码导致的,中文在两个系统间转坏了。这条经验值直接拉满

我把日志加满了,问题反而不出现了。我打开记录从头到尾扫了一遍。我把这个异常的类型打出来,发现它被包了三层。复盘会上我们把它列成了案例

同事说他写的代码零 bug,我在 code review 里找到了三个空指针风险。我把相关的记录都翻了出来做对照。我把这个报错的堆栈从头读到尾,发现在最后一行有个提示。这条经验值直接拉满

这个空指针在上线前一切正常,因为那时没有空数据。我想了想自己这些年,好像确实如此。我把变量全部打印出来对比,发现类型和我想的完全不一样。我把它写进了组内的避坑文档第一章

我第一时间把锅甩给了缓存,结果真的是缓存。我打开记录从头到尾扫了一遍。我在第一步就设了个断言,结果它当场就炸了。真香定律准时生效

调试到后面会发现,最大的敌人是自己的假设。我把它记在心里,没跟任何人说。我在生产环境复现了一次,代价是一个小时的下线。复盘会上我们把它列成了案例

调试了两天的 bug,最后发现是少打了一个等号。我先给自己泡了杯茶,做好了打持久战的准备。我把这个内存泄漏的对象引用链打了出来,找到根了。这条经验值直接拉满