内存:
问题:
图库加载70M以上图片,手机重启;
问题分析:
一直以来,内存问题到底会引起什么故障都不是很明确;按正常思路,内存不够,按adj等级删除进程就可以了,在分析图库问题时,发现手机重启;
通过ddms查看内存,发现图库内存并没增加,而且就算增加,根据oom规则图库内存超过设定大小,会自动关闭;
通过dump命令查看native内存,发现图库native也没有增加,但servicemedia内存达到立80M以上;
当adj删到一定等级,有另外的机制来删除进程,当删到system_server时手机重启;
问题解决:
限制图库加载的大小;
总结:
这里主要通过图库分析下手机内存问题;手机内存泄漏不够时到底会怎么样;这里但系统几个高等级adjservice泄漏时就会重启,当进程kill,没有合理关闭硬件设备如btwifi,而进程本身容错机制就不够,会因为btwifi导致手机死机黑屏;
死机问题:
1.dump,手机死机后,如果能找到口,则dump;
2.dump中有kmsg信息,可以通过tracesimulator获取,我这里推荐直接用ue打开拷贝9w行左右的log信息即可,我们dump时并没有获取cpu信息,所以不能和以前featurephone一样定位bug,只能获取kmsg;
3.根据kmsg的时间反推,如果有ooplog或等级为0log,则可以定位故障,如果没有也不能确定不是AP侧死机,对比串口log和kmsg,kmsg有时没把最后的log保存下来;所以还是要根据log等级来分析;有些log很重要但打印事等级设置很低,有些引起bug的log被覆盖掉了;
4.如果分析kmsg无果,可以通过recoverf3命令查看f3log;f3log比QXDM的打印要多,而且对关键地方有提示;
err_exception_handler.c ExIPC: PFault 0 @ df021f0, tid=13c001
boot_trap.c Divide By Zero (sig 2, arg 2)
dog.c Dog bark timeout.
但对于死循环等打印根本看不出来;而且f3log也会有丢失的时候;
5.对于上面分析不出的问题,或者log丢失的问题,只能通过复现,或者把log发给高通来解决;