1) 是否容易重现
如果容易,它的复现步骤是什么
如果不容易,它在什么条件下的出现机率比较大,有没有可能缩小排查的范围
2) 是否最近才引入的,发现的时机和频率如何
找出 crash 出现的时间范围,时机,和频率
根据 backgrace 和 git log, 回顾 crash 相关代码的修改记录
3) 灵活运用演绎法,归纳法和二分法
4) 大胆假设,小心求证
假设条件,测试,排除,不断重复,缩小范围
有必要时画一张思维导图,记下每条排查路径
5) 君子性非异也,善假于物也
查询 google, stackflow, 听取同事的意见
6) 学学侦破和推理
最后一条,看看破案和推理小说及剧情,学学侦破技术
有一些惯犯和惯用作案手段值得研究
多线程处理不当
多个线程操作一块内存区域,没有安全地加锁和串行化
合局和单例对象是重点排查对象
内存处理不当
内存管理不当,用到的内存却给别人破坏了,例如