system_server出现问题发生的重启和开机重启是不一样的,只是system_server发生了重启。其他系统进程如init,logd, vold等是没有变化的。
直观一点去观察,可以采用kill -9 <system_server PID>去查看。
这里,我们演示一个调试过程。使用脚本进行自动点击测试,执行几千次后由于存在内存泄漏,会导致系统重启。
auto.sh (需要注意的是,脚本中的换行符必须是linux风格的,不然脚本执行会有出错)
i=1
while [ $i -le 10000 ];
do
echo $i
#setting
input tap280 700
#Connecteddevices
input tap 388388
#Bluetooth
input tap633 246
sleep 1
#Bluetooth
input tap633 246
#back
inputkeyevent "KEYCODE_BACK"
inputkeyevent "KEYCODE_BACK"
i=`expr $i+ 1`
done
在“重启”后,可以发现,手机上自动点击还在继续执行
查看脚本执行的log
5017
5018
5019
5020
5021
Killed
Killed
5022
Killed
Killed
Killed
5023
5024
5025
5026
这就是一个典型的system_server重启