android+adb+shell+kill+进程,ADB+Shell监控Android显示异常并获取日志SHELL脚本分享

前几日遇到样机在运行一段时间后出现显示异常问题,查看Logcat日志只能看到SurfaceFlinger因为Binder异常EX_TRANSACTION_FAILED导致重启。但是具体什么原因导致而此问题却无从得知,查看dmesg信息也不足。并且SurfaceFlinger重启后显示恢复正常,从而难以找到确切原因。

如果能够在SurfaceFlinger重启时保存下之前很长一段时间的日志将非常有用。因此写了如下脚本。

#!/bin/bash

rm *.log -rf;

rm *.info -rf;

adb wait-for-device;

echo "get proccess and thread info!";

adb shell ps -AT > start_ps-AT.info;

echo "make test log!";

startpid=`sudo adb shell ps -ef | grep composer | awk '{print $2}'`

count=0

flg=0

while true; do

#echo "To make logcat.log!";

#adb logcat > logcat$count.log

logproc=`sudo adb shell ps -ef -o ARGS | grep "logcat -t"`

if [ -n "$logproc" ]

then

echo "Wait the logcat end!";

else

adb logcat -t 5000 > logcat$count.log &

dmesgpid=`sudo adb shell ps -ef | grep dmesg | awk '{print $2}'`

adb shell dmesg -w> dmesg$count.log &

if [ -n "$dmesgpid" ]

then

adb shell kill $dmesgpid;

fi

echo "To make logcat$count.log & dmesg$count.log!";

count=$[++count]

fi

endpid=`sudo adb shell ps -ef | grep composer | awk '{print $2}'`

if [ $endpid -eq $startpid ]

then

adb shell ps -AT > end_ps-AT.info;

sleep 0.2s

else

echo "proccess dead";

adb logcat > logcat_last.log &

adb shell dmesg > dmesg_last.log &

sleep 5s

break;

fi

if [ $count -gt 50 ]

then

count=0 ;

rm dmesg[0-9].log -rf;

rm logcat[0-9].log -rf;

fi

if [ $flg -eq 0 ]

then

continue;

fi

if [ $count -gt 25 ]

then

flg=1;

rm dmesg1[0-9].log -rf;

rm logcat1[0-9].log -rf;

fi

done

通过此脚本可以连续的获取dmesg和logcat的日志从而分析处具体的问题,并且可以自动监测停止并保存日志。

这里特分享给大家,大家可以根据自己的需要修改使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值