print 调试大法永远的神,断点还没配好,print 已经输出三轮了。我盯着屏幕,觉得这才是我的一天。我用了二分法把出问题的版本区间缩到了两个提交。办公室安静得能听见键盘声

同事说他写的代码零 bug,我在 code review 里找到了三个空指针风险。我重新看了一遍手上的计划,把风险项标了出来。我最后发现是一个大小写问题。这大概就是程序员的人生吧

报错信息说问题在第 1024 行,那个文件一共 1023 行。我盯着屏幕,觉得这才是我的一天。我在心里默默记下这个坑,写进了自己的检查清单。复盘会上我们把它列成了案例

我把日志加满了,问题反而不出现了。我重新看了一遍手上的计划,把风险项标了出来。我把这个异常的类型打出来,发现它被包了三层。这条经验值直接拉满

复现不了的 bug 最消耗人,因为你连敌人是谁都不知道。我愣了两秒,然后继续敲代码。我把这个变量的生命周期理了一遍,发现它被提前释放了。幸好之前留了备份

我第一时间把锅甩给了缓存,结果真的是缓存。我把相关的记录都翻了出来做对照。我在本地把环境完全对齐了一遍,还是复现不出来。连茶水间都安静了

调试的本质是不断缩小「问题不在这里」的范围。我想了想,觉得这话没法接。我加了个 try-catch,先把异常吞掉,回头再查根因。连茶水间都安静了

print 调试大法永远的神,断点还没配好,print 已经输出三轮了。我听完沉默了,因为太真实了。我发现这个问题只在周一早上出现,后来知道是定时任务。办公室安静得能听见键盘声

我用了半天才明白,问题不在这台机器上。我决定先把手上的事情做完再处理这件事。我盯着那段代码看了二十分钟,最后发现是我自己三天前改的。从此我多了一条团队规约

复现不了的 bug 最消耗人,因为你连敌人是谁都不知道。我叹了口气,然后打开了编辑器。我把这个 bug 的优先级降了一级,因为它只在测试环境出现。从此我多了一条团队规约