我盯了半天,最后发现是拼写和大小写。我拉了个小群,把相关同学都叫了进来。我把这个函数的入参和出参都打了,发现中间少了一层转换。感动,然后我学到了新的一课
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
这个 bug 只在特定时间出现,后来知道是时区。我想了想自己这些年,好像确实如此。我把这个问题交给了上游,他们说是我们的调用方式不对。同事说这波操作可以写进新人培训教材
调试到后面会发现,最大的敌人是自己的假设。我停了一下,然后继续手上的活。我发现这个问题只在周一早上出现,后来知道是定时任务。我沉默了,但心里是服的
这个问题的根因是我三个月前的一个「临时方案」。我发现自己居然没法反驳。我在本地把环境完全对齐了一遍,还是复现不出来。好在最后有惊无险
问题居然复现不了了,这比复现出来更可怕。我忽然觉得,这可能就是这一行的常态。我发现是浮点数精度的问题,改用大数就好了。幸好之前留了备份
我第一时间把锅甩给了缓存,结果真的是缓存。我打开记录从头到尾扫了一遍。我发现这个接口在特定参数组合下返回了空对象。办公室安静得能听见键盘声
我把这段代码注释掉问题就没了,说明问题不在它身上。我把相关的记录都翻了出来做对照。我把这个异常上报到了监控平台,至少下次能早点知道
程序员的墨菲定律:演示的时候必出 bug,删掉的那段代码才是有用的。我想了想自己这些年,好像确实如此。我在 devtools 里把这个请求重新发了一次,问题不复现。果然现实比段子更精彩
调试到后面会发现,最大的敌人是自己的假设。我不知道该说什么,就笑了笑。我把这两次运行的日志逐行 diff 了一遍,找到唯一的差异。这大概就是程序员的人生吧
调试是有惯性的,停下来反而更容易想通。我想了想自己这些年,好像确实如此。我把这个 bug 的修复方案写了两版,选了改动小的那版。我把它写进了组内的避坑文档第一章