monkey异常停止问题记录

一:背景

    今天早上接到测试反馈说,他们昨晚跑monkey,跑了10分钟monkey就自动停止了。由于一些其他原因,机器没有充电,早上来已经没电关机了,也就是失去了宝贵的现场。

二:Debug

2.1 艰难的开头

    虽然没了现场,但万幸还是有logcat可以看。查看上层log,发现monkey进程在打印完

04-28 20:22:24.990 14850 14850 I Monkey  : Sleeping for 1000 milliseconds这条之后,就没有了任何打印,查看monkey的pid:14850,最后一句打印也是这个,没有任何monkey被杀或者monkey异常的打印。这时候说实话有些麻爪了,有些不知该如何继续。

2.2 希望的曙光

    虽然上层日志中没有看到任何异常信息,但我相信在没有人为操作的情况下,monkey停止了,应该就是monkey所在进程被杀了。于是我在所有日志中搜索14850相关的打印,准备瞎猫碰碰死耗子,于是乎,我看到了希望。。

<14>[19970.872566] [04-28 20:22:25.057]init: Sending signal 9 to service 'adbd' (pid 14815) process group...
<6>[19970.873826] [04-28 20:22:25.057]Killing 'adbd' (14815), adj -1000,
...
<6>[19970.874448] [04-28 20:22:25.057]Killing 'commands.monkey' (14850), adj -1000,
...
<6>[19970.895935] [04-28 20:22:25.077]commands.monkey (14850) used greatest stack depth: 3852 bytes left
<6>[19970.946968] [04-28 20:22:25.127]oom_reaper: reaped process 14850 (commands.monkey), now anon-rss:0kB, file-rss:0kB, shmem-rss:140kB
<14>[19971.108320] [04-28 20:22:25.297]libprocessgroup: Successfully killed process cgroup uid 0 pid 14815 in 235ms
<14>[19971.111827] [04-28 20:22:25.297]init: Service 'adbd' (pid 14815) received signal 9
<14>[19971.115190] [04-28 20:22:25.297]init: Untracked pid 14850 received signal 9

  终于看到了monkey进程被杀的日志,但仔细分析了下,是init进程把adbd杀了,monkey进程也随之被杀,难道monkey进程和adbd有什么关联?

    带着这个疑问,继续下面的操作。和测试沟通monkey是如何启动的,被告知monkey是通过adb命令来启动的。本地运行monkey命令后,adb shell ps -A |grep monkey,查看记录monkey所在进程,adb shell ps -A |grep adbd,查看记录adbd的pid(6018),执行adb shell kill -9 6018,把adbd进程杀掉,随后执行adb shell ps -A |grep monkey,发现monkey进程果然没了,查看设备,monkey确实也停止了。看起来就是init把adbd杀了,导致monkey进程也被杀了,出现了monkey停止。

2.3 幕后真凶

    从以上分析看下来,这个问题是由于init 杀 adbd,连累monkey进程一起被杀,那么init为什么会啥adbd呢?这是正常现象还是有问题的呢?带着问题继续下面的探索。

    查看adbd进程打印,发现adbd在打印完

04-28 20:22:22.249 14815 14819 I adbd    : jdwp connection from 17062

这条日志之后,就没有任何打印了,查看这条日志打印附近日志,发现了以下打印

原来monkey进入了开发者选项,且一直到monkey停止,设备一直处于开发者选项界面。开发者选项! 众所周知,开发者选项关了,adb就连不上了,那么大胆猜测一下,是不是monkey把开发者选项关了,导致adbd进程被杀? 来继续尝试:adb shell ps -A |grep adbd,记录此时adbd的pid,把开发者选项关闭,打开一次,再次执行adb shell ps -A |grep adbd,果然,adbd的pid变化了,说明adbd被杀了一次。看来幕后真凶是monkey自己。。。

三:解决问题

  为了解决这个问题,在开发者选项做了规避处理,如果设备正在跑monkey,把开发者选项给屏蔽掉。上了此方案之后,没有复现monkey异常停止问题了,问题解决。

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值