转储分析杂谈
转储文件(dump),是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出一个磁盘文件;在Windows文件后缀为.dmp。
Dump分析是一件很有意思的事情;分析Dump的过程就像福尔摩斯探案一样,当最后发现真相的那一刻,喜悦的心情是溢于言表的。
今天,我这里说的转储分析特指因程序异常而生成的dmp。这是我们为了改进软件质量的手段之一。
基本上,Dump Server每天都会收集到一些崩溃反馈,有的是崩溃在游戏客户端,有的是崩溃在游戏引擎。我们团队负责游戏引擎dump分析。回顾最近的一次dump,从开始到结束,我们一共错误三次修正的机会。我总结为需要合适的人做合适的事情。
具有以下特征的人不适合分析dump:
- 没有探索挖掘意愿的人
- 临下班前着急回家的人
- 过于相信他人言论的人
具有以下特征的人适合做dump分析:
- 愿意花时间探索验证的人
Dump分析这件事情的特征是,你花1个小时和花10个小时得到的结果可能是一样的;但就是那一点点的探索验证,才能换来最终的真相。投入多少时间,dump分析的边界是什么,这都比较讲究,尺度把握全靠个人。
我个人分析dump的步骤是:
- 看堆栈
- 看日志
- 堆栈分析
- 猜测可能原因,写测试用例验证
- 总结整理这次dump的直接原因、间接原因、修改方案(当然有时候也无果而终)