业余看某代码
添加进代码,导致某种时候会有bug出现,但连续几个晚上都不知道问题出现在哪里,因为只有当有时才会偶尔出现。
1.没有使用排除法,弱智的蛮力白费功夫。
2.没有清晰的检查列表,分清可能性排序并进行验证排除。浪费了将近三个晚上以上时间。
3.没有清晰的计划列表,导致陷入一些事后看起来显而易见的表象。
回顾起来就是:
不确定哪里出现问题就:
1.回滚到没有bug的前个版本(新切一个分支)
2.按加进的代码,一段一段排查(注掉看哪里复现bug,这次的问题很明显就是因为你加了一个接口进去导致的。直接注掉接口的调用部分就没bug了,过于自信与执着陷入表象下)
3.排查、修改接口里的代码,肯定是哪里逻辑或者其他未预见的地方有问题。(本次具体就是,有个数组在接口使用中被切去一个包含目标的数据,导致数组的长度变化,然后导致循环访问了界外的数据。吐槽一下,动态语言真蛋疼,习惯了cpp这种问题也应该很快排查出来,另外编程习惯还是有问题,对数组的操作要小心,很多次bug都是这家伙导致的)
多学习大佬们的经验:
Whats-the-hardest-bug-youve-debugged