本篇文章主要介绍 Android
开发中的部分知识点,经过阅读本篇文章,您将收获如下内容:程序员
1、SWT 手机重启问题简介
2、SWT 手机重启问题处理流程
3、SWT 手机重启问题的缘由
4、SWT 手机重启问题分析流程
5、SWT 手机重启问题分析举例
6、Android O以上导 Log 注意事项
SWT(Software Watch Dog ) 主要用来监控SystemServer
等重要线程/Service
的运行状况。若是发现其阻塞超过 60s ,看门狗进程就会把系统重启,进而保证系统能够恢复到正常状态。缓存
判断阻塞的方法:微信
主要是: AMS、 Foreground Threadoop
主要是: Main Thread、UI Thread、IO Thread、Display Thread、WMS 、Other Services。测试
SWT 判断阻塞的方法 图文描述以下:spa
SWT 处理流程:
1.每半分钟check 一次system_server 进程:
检查系统是否卡住,若是卡住,dump
一次system_server
的backtrace
线程
2.一分钟卡住后kill,并从新计数:
若是卡住,第二次dump
,并kill
掉 system_server
进程 ,不然从新计时。3d
3.SWT 处理大体流程以下:code
致使 SWT
重启缘由的缘由有不少种。server
主要致使的缘由以下:
首先搜索关键 watchdog,查看是否有重启发生。
线程被 Block 搜索关键字 held by
线程被 Waiting 结合代码分析。
确认Block的线程是否有闭环的死锁关系。
线程状态 Native,而且callstack中含有一对
IPCThreadState::waitForResponse
IPCThreadState::talkWithDriver
的明显特征。
搜索关键字
I watchdog ,
查看是否有 surfaceflinger hang,默认卡住40s
,就会重启。
线程状态 Native,查看是否有
PowerManagerService.nativeSetAutoSuspend
线程状态Native,查看是否有
Process.zygoteSendArgsAndGetResult
Dump
超过60s 可能会引发手机重启。
搜索关键字
dumpStackTraces
或
dumpStackTraces process
Android O
以上的 mtklog
和db
不在同一个目录,须要执行如下adb
命令 导Log
.
//1. 导 MTK log adb pull /sdcard/mtklog //2. 导 AEE log,若是没有,请执行第3步 adb pull /data/aee_exp //3.导 data 下MTK缓存 的aee log adb pull /data/vendor/mtklog/aee_exp
至此,本篇已结束,若有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!