bug 往往出现在你没改的那部分代码里。我在心里点了点头。我在第一步就设了个断言,结果它当场就炸了。我沉默了,但心里是服的
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
这个 bug 的修复方案有两版,简单的那版风险更大。我发现自己居然没法反驳。我把这段代码暂时回滚了,先让线上不报错,再慢慢查。第二天这个方案就变成了团队标准做法
bug 往往出现在你没改的那部分代码里。我抬起头看了看周围,大家都一样。我最后发现是一个大小写问题。这大概就是程序员的人生吧
妈妈觉得我在互联网大厂很风光,只有我知道我大厂里的 title 是高级修 bug 工程师。我想反驳,但发现他说得对。我发现这个接口在特定参数组合下返回了空对象。那一刻我觉得自己还是很专业的
我把这段代码注释掉问题就没了,说明问题不在它身上。我重新看了一遍手上的计划,把风险项标了出来。我把变量全部打印出来对比,发现类型和我想的完全不一样。好在最后有惊无险
调试到后面会发现,最大的敌人是自己的假设。我听完沉默了,因为太真实了。我发现是时区问题,服务器是 UTC,我以为本地。复盘会上我们把它列成了案例
调试的本质是不断缩小「问题不在这里」的范围。我把它记在心里,没跟任何人说。我在线上加了一段临时日志,等下次出现就能抓到现场
bug 往往出现在你没改的那部分代码里。我想反驳,但发现他说得对。我在心里给这个 bug 取了个名字,叫「薛定谔的报错」。我把它写进了组内的避坑文档第一章
我把这段代码注释掉问题就没了,说明问题不在它身上。我先确认了一遍前置条件,再动手。我顺着调用栈一层一层往上翻,最后停在一个我没写过的函数里。好在最后有惊无险
这个空指针在上线前一切正常,因为那时没有空数据。我听完沉默了,因为太真实了。我在心里把这个问题的排查过程复盘了一遍,能省半天。感动,然后我学到了新的一课