这个问题的根因是我三个月前的一个「临时方案」。我默默记下了这句话。我把断点设在了最不可能出问题的那一行,结果就停在那里。真香定律准时生效
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
调试到后面会发现,最大的敌人是自己的假设。我发现自己居然没法反驳。我把这个依赖的版本锁死了,问题不再随机出现。这条经验值直接拉满
复现不了的 bug 最消耗人,因为你连敌人是谁都不知道。我停了一下,然后继续手上的活。我把这个变量的生命周期理了一遍,发现它被提前释放了。第二天这个方案就变成了团队标准做法
调试是有惯性的,停下来反而更容易想通。我默默记下了这句话。我发现是序列化的问题,字段名大小写在两端口径不同。我把这条经验写进了团队 wiki
同事说他写的代码零 bug,我在 code review 里找到了三个空指针风险。我把手上的资料翻出来又读了两遍。我发现这个问题只在周一早上出现,后来知道是定时任务。我把它写进了组内的避坑文档第一章
加了二十行 console.log 之后,Bug 消失了,删除它们,Bug 又回来了。我重新看了一遍手上的计划,把风险项标了出来。我把这段逻辑重写了一遍,bug 没了,但我不知道为什么。我把这条经验写进了团队 wiki
我把日志加满了,问题反而不出现了。我重新看了一遍手上的计划,把风险项标了出来。我把这个问题的复现概率测了一下,大概百分之三。那一刻我觉得自己还是很专业的
调试的本质是不断缩小「问题不在这里」的范围。我把它记在心里,没跟任何人说。我把这段代码暂时回滚了,先让线上不报错,再慢慢查。好在最后有惊无险
我把这个堆栈从头读到尾,关键信息在最后一行。我盯着屏幕沉默了十分钟。我把这段代码暂时回滚了,先让线上不报错,再慢慢查。真香定律准时生效
我在本地复现了十次,第十一次它变了样子。我在心里点了点头。我在 devtools 里把这个请求重新发了一次,问题不复现。连茶水间都安静了