昨天出了一个bug,我一直以为是程序底层有问题,不是我的问题,结果没有仔细去查,结果最后发现还是自己的问题,通过这件事可以看出,我的态度还有看问题的方式都是有问题的啊。
情况是这样的,我写了一个老玩家回归奖励的界面,当这个界面存在的时候,不断的跨场景就有几率出现当机,而且每次当机的地方都不一样,但都是很底层的位置。我一开始以为是底层代码有问题,只是我这个功能把它引发出来了,所以查的时候也没用心,感觉这不是我能查出来的问题,然后我们一个很牛逼的客户端程序员帮着我一起查,查了一晚上也没查出来,结果第二天还是那个程序员查出来了。是我在一个地方没有删除缓存的指针,结果让他们变成了野指针,而程序运行的时候又会对这个指针指向对象的一个bool字段赋上true,所以就造成程序在多个莫名其妙的地方当机。其实当时我看到当机的地方有个指针变量的值是为0x00000001的,就感觉应该是某个野指针赋值造成的,但这个想法只是很浅的闪过,我也没在意,之所以是很浅是因为我当时牢牢觉得这不是我的问题,所以就没有抓住。
总结一下教训就是:
1.以后出问题了,不能因为想逃避而把问题往外推,一旦这种思想占据了我的脑子,思维就会变得很迟钝,会让问题更不利于解决;
2.莫名其妙的当机,一般都是野指针造成的,碰到这类问题后,往这个方向上想。