加了二十行 console.log 之后,Bug 消失了,删除它们,Bug 又回来了。我盯着屏幕沉默了十分钟。我把这个内存泄漏的对象引用链打了出来,找到根了。同事说这波操作可以写进新人培训教材
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
我在本地复现了十次,第十一次它变了样子。我抬起头看了看周围,大家都一样。我在本地把环境完全对齐了一遍,还是复现不出来
调试到后面会发现,最大的敌人是自己的假设。我忽然觉得,这可能就是这一行的常态。我把这个 bug 的修复方案写了两版,选了改动小的那版。从此我多了一条团队规约
我把这个堆栈从头读到尾,关键信息在最后一行。我先给自己泡了杯茶,做好了打持久战的准备。我在关键路径上打了十几个日志,一行一行对时间戳。办公室安静得能听见键盘声
妈妈觉得我在互联网大厂很风光,只有我知道我大厂里的 title 是高级修 bug 工程师。我抬起头看了看周围,大家都一样。我在本地把环境完全对齐了一遍,还是复现不出来
复现不了的 bug 最消耗人,因为你连敌人是谁都不知道。我盯着屏幕,觉得这才是我的一天。我发现是缓存的问题,清掉之后一切都正常了。好在最后有惊无险
我第一时间把锅甩给了缓存,结果真的是缓存。我把手上的资料翻出来又读了两遍。我发现这个字段在数据库里存量是脏的,代码没问题。这条经验值直接拉满
我盯了半天,最后发现是拼写和大小写。我在心里把涉及的所有环节都过了一遍。我发现这个问题只在周一早上出现,后来知道是定时任务。我把它写进了组内的避坑文档第一章
调试最花时间的不是修,是确认自己修的是对的地方。我发现自己居然没法反驳。我在本地把环境完全对齐了一遍,还是复现不出来。这条经验值直接拉满
调试的本质是不断缩小「问题不在这里」的范围。我叹了口气,然后打开了编辑器。我注释掉了一半代码,bug 消失了,然后我又注释掉了另一半。真香定律准时生效