android log分析


date: 2019-12-19
email: panzh8266@163.com
github: https://github.com/Jess-Pan


coffe.jpg

1. monkey 跑测常见问题

monkey跑测一般会发生在硬件更换物料(内存、存储)后,需要进行一次跑测来确认物料的稳定性,提供该料是否可以用于生产的依据。作为系统软件开发,需要协助测试分析log文件内容,着重关注系统核心服务的存活状态、输出log是否为乱码、kernel层的报错等等会导致系统关机、重启、卡死等现象的问题

1.1 手机断电

  • kernel_log 中会有如下报错
<12>[22737.747509]  (2)[278:health@2.0-serv]healthd: battery l=0 v=3084 t=37.0 h=2 st=2 c=2042 fc=1397000 cc=0 chg=u

1.2 大量核心服务死亡

  • main_log 中可以看到大段的核心服务死亡,一般为系统进程崩溃,watchdog自发的重启服务,伴随着有预兆的重启

    01-01 16:46:23.909   203   203 I ServiceManager: service 'sim_manager' died
    01-01 16:46:23.909   203   203 I ServiceManager: service 'content' died
    01-01 16:46:23.909   203   203 I ServiceManager: service 'powerguru' died
    01-01 16:46:23.909   203   203 I ServiceManager: service 'sensorservice' died
    01-01 16:46:23.909   203   203 I ServiceManager: service 'power' died
    01-01 16:46:23.909   203   203 I ServiceManager: service 'gfxinfo' died
    01-01 16:46:23.909   203   203 I ServiceManager: service 'permission' died
    01-01 16:46:23.909   203   203 I ServiceManager: service 'telephony.registry' died
    01-01 16:46:23.909   203   203 I ServiceManager: service 'telephony.registry0' died
    01-01 16:46:23.909   203   203 I ServiceManager: service 'procstats' died
    01-01 16:46:23.909   203   203 I ServiceManager: service 'bluetooth_manager' died
    

1.3 异常掉电

  • 所谓异常掉电就是电池在操作过程中突然掉落,或者电源接线处本身接触不良
  • 测试现象突兀,使用过程中突然黑屏(关机 / 黑屏卡死 / 重启),重启的主要原因为硬件可能做了掉电保护,让系统重启;若是没有做掉电保护现象一般不包括重启,不同的测试人员对该现象描述不同,还需要进行现场确认
  • 判断方式
    1. main_log 中没有关机预兆,没有系统服务大量死亡现象
    2. kernel_log 同样没有关机预兆,没有panic,没有error

1.4 watchdog 引起的系统重启

watchdog 本身分为硬件看门狗和软件看门狗,我们正常看到的属于软件看门狗的范畴,它会在system_server发生死锁、程序跑飞时,杀死系统进程,然后重新启动system_server,让系统从不正常的状态回到工作状态中。这个过程我们称为软件重启,这个过程会输出一些制式的log

当然,偶尔也会看到硬件看门狗,log输出信息类似,但是会明显看到有关于内存地址的报错,出现这样的问题需要联系硬件确定问题报错点。

软件重启:重启核心服务,不涉及kernel层,上层应用重新启动但是下层依然在运行

硬件重启:kernel层重启,断电重启

  • kernel_log 中可以找到类似log

    04ECE5 01-02 13:02:55.657  1813  2072 W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in handler on PackageManager (PackageManager)
    04ECE6 01-02 13:02:55.657  1813  2072 W Watchdog: PackageManager stack trace:
    04ECE7 01-02 13:02:55.658  1813  2072 W Watchdog:     at android.os.BinderProxy.transactNative(Native Method)
    04ECE8 01-02 13:02:55.658  1813  2072 W Watchdog:     at android.os.BinderProxy.transact(Binder.java:790)
    

1.5 kernel 层报错

  • kernel_log / last_kmsg 会找到类似log
[29125.251579] -(2)[95:hps_main]---[ end trace f42e54c6cd9c9843 ]---
[29125.809523] -(2)[95:hps_main]Kernel panic - not syncing: Fatal exception
[29128.972461] -(2)[95:hps_main]SMP: failed to stop secondary CPUs

这种报错属于驱动层面报错,需要联系驱动定位报错位置

1.6 log中出现大量乱码

  • 这个判断条件需要首先排除
    1. 异常断电造成的乱码,一般乱码位置为文件末尾
    2. 网络数据传输输出的乱码,因为输出传输一般为字节流,输出即为乱码
    3. 一些加密的log输出

1.7 monkey启动关机流程

  • 一般我们可以在monkey_log中看到 log
// Allowing start of Intent { act=com.android.internal.intent.action.REQUEST_SHUTDOWN cmp=android/com.android.internal.app.ShutdownActivity } in package android
//[calendar_time:2019-01-01 23:36:25.452  system_uptime:40971637]

2. 手动测试常见问题

2.1 硬件功能问题

  • 确认跑测前该功能是否正常
  • 确认硬件是否安装

2.2 重载测试,应用失去响应

  • 小内存手机,重载anr属于正常现象
  • 从log中需要观察发生anr时间段的后台任务

3.3 突然关机

  • 异常掉电

3. 附上测试常用的monkey命令

3.1 monkey 系统跑测 (忽略报错)

adb shell "monkey 
-p com.google.android.calendar
-p com.mediatek.camera 
-p com.android.chrome
-p com.android.deskclock 
-p com.android.contacts 
-p com.facebook.katana 
-p com.google.android.apps.nbu.files
-p com.android.gallery3d 
-p com.google.android.gm.lite
-p com.google.android.talk 
-p com.instagram.android 
-p jp.naver.line.android 
-p com.google.android.apps.mapslite
-p com.google.android.apps.messaging
-p com.android.music 
-p com.android.dialer 
-p com.android.vending 
-p com.tencent.mobileqq 
-p com.android.settings 
-p com.skype.raider 
-p com.tencent.mm 
-p com.whatsapp 
-p com.twitter.android 
-p com.google.android.apps.youtube.mango
-p com.android.soundrecorder 
-p com.google.android.play.games
 --throttle 200 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v 10000000 > /sdcard/monkey.log"

3.2 单个应用跑测(不忽略错误)

adb shell "monkey -p com.mediatek.camera --throttle 200 -v 10000000 > /sdcard/monkey.log"

3.3 个人常用跑monkey脚本

#!/bin/bash
readonly time=$(date "+%Y%m%d%H%M")
readonly defaultCount=100000
readonly defaultTypeOne="--throttle 200 --ignore-crashes --ignore-timeouts --ignore-security-exceptions"
readonly defaultTypeTwo="--throttle 200"
readonly defaultlogUrl="${HOME}/Desktop/${time}"
readonly defaultlogUrl_SDcard="/sdcard/monkey_log.txt"

read -p "please input packages name: " packages
if [[ -z ${packages} ]]; then
    # null
    echo "未指定跑测应用包名"
    exit
fi
echo "packages : ${packages}"
echo 

read -p "please input monkey count: " inputCount
if [[ -z ${inputCount} ]]; then
    count=${defaultCount}
    echo "default count : ${defaultCount}"
else 
    count=${inputCount}
    echo "count : ${count}"
fi

echo 

read -p "please choose monkey test type \
1. ${defaultTypeOne} \
2. ${defaultTypeTwo} : " inputType
if [[ -z ${inputType} ]]; then
    type=${defaultTypeOne}
    echo "default type : ${type}"
elif [[ ${inputType} -eq 1 ]]; then
    type=${defaultTypeOne}
    echo "default type : ${type}"
elif [[ ${inputType} -eq 2 ]]; then
    type=${defaultTypeTwo}
    echo "default type : ${type}"
else
    echo "error !"
fi

echo

read -p "please choose space for monkey_log \
1. ${defaultlogUrl} \
2. ${defaultlogUrl_SDcard}: " logUrl

if [[ ${logUrl} -eq 1 ]]; then
    logUrl=${defaultlogUrl}

elif [[ logUrl -eq 2 ]]; then
        logUrl=${defaultlogUrl_SDcard}
        echo "logUrl : ${defaultlogUrl-SDcard}"
        read -p "Are you sure to continue? [y/n] " continue
        case ${continue} in
            [yY]*)
                adb shell "monkey ${packages} ${type} -v ${count} > ${logUrl}"
                exit

                ;;
            [nN]*)
                echo exit
                ;;
            *)
                echo "Just"
                exit
                ;;
        esac
        
else
    echo "input error!"
    exit
fi

echo "logUrl = ${logUrl}"
echo

read -p "Are you sure to continue? [y/n] " continue
case $continue in
    [yY]*)
        if [ ! -d ${logUrl} ]; then
            mkdir -p ${logUrl}
            echo "目标文件夹不存在,创建目录 : ${logUrl}"
        else
            echo "目标文件夹存在"
        fi

        adb shell monkey -p ${packages} ${type} -v ${count} 2>&1 | tee ${logUrl}/monkey_log.txt 
        ;;
    [nN]*)
        echo exit
        ;;
    *)
        echo "Just input n(N) or y(Y)"
        exit
        ;;
esac

3.4 打断monkey脚本

#!/bin/bash
monkey_pid=`adb shell ps -ef | grep monkey | grep -v "grep" | awk '{print $2}'`
echo "monkey_pid = ${monkey_pid}"
if [[ -z ${monkey_pid} ]]; then
    echo "没有monkey在执行"
else
    adb shell kill ${monkey_pid}
    echo "kill sucessfully"
fi
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348