浅谈log定位分析

小伙伴们每天测试的时候打开工程模式抓取mtklog,是否清楚抓取的都是一些什么类型的log呢?不同的问题出现时都查看的都是哪些log呢?

遇到问题后想先定位一下问题,看到那么多密密麻麻的log不知道从何下手呢?

一.log的类型

1、按照android系统层次划分:

android OS从上层到底层可以划分为如下:Application---Framework---Libraries---Linux Kernel

(1)发生在Java层(Application,Framework)的异常:JE

常见JE类型有:

NullPointerException - 空指针引用异常

ClassCastException - 类型强制转换异常。

IllegalArgumentException - 传递非法参数异常。

ArithmeticException - 算术运算异常

ArrayStoreException - 向数组中存放与声明类型不兼容对象异常

IndexOutOfBoundsException - 下标越界异常

NegativeArraySizeException - 创建一个大小为负数的数组错误异常

NumberFormatException - 数字格式异常

SecurityException - 安全异常

UnsupportedOperationException - 不支持的操作异常

(2)发生在Native层(Libraries)的异常:NE

(3)发生在kernel层的异常:KE,kernel log一般保存成文件被打包在db文件中

2、log存储文件

一般打开mtklog文件后,会生成几个文件,那每个文件分别代表什么类型的log文件呢?

1、Mobile Log:也称AP Log:是系统应用层的log,比如应用无响应或强行关闭

  mobile log中有4种主要log文件:kernel ,main,events 和radio log

  kernel log主要是记录kernel相关的问题,如driver(相机,蓝牙,USB)出现问题

  events_log:系统事件日志,主要输出记录各个activity周期及事件

  sys_log:系统日志,Exception定位点

  radio_log:输出通话,网络状态变化

2、modern log:是手机里负责搜网和sim卡数据操作底层模块

3、NetWork log:主要针对网络的Network相关问题抓取

4、aee_exp:打开aee_exp,可以看到两个文件ZZ_INTERNAL,db.00.KernelAPI.dbg

   ZZ_INTERNAL:是什么错误,发生错误的程序,报错时间

   db.00.KernelAPI.dbg:报错的各种信息及报错时机器的各种状态信息

   用GAT工具可打开db文件,打开后的部分文件显示如下:

   几种主要文件信息:

   __exp_main.txt:异常类型,调用栈等关键信息。

   _exp_detail.txt:详细异常信息

  SYS_ANDROID_LOG:android main log

  SYS_KERNEL_LOG:kernel log

  SYS_LAST_KMSG:上次重启前的kernel log

  SYS_REBOOT_REASON:重启时的硬件记录的信息。

  SYS_VERSION_INFO:kernel版本

5、traces.txt:/data/anr/traces.txt:虚拟机信息,包括进程的,线程的跟踪信息

二.log浅析

初步定位:关键字查找

常见关键字查找:"null" "error" " "E/","Fatal","NullPointerException","Build fingerprint:","exception","anr","DexOpt"等的错误信息,来定位问题

不同的模块出现问题的关键字不一样,可收集相应的关键字进行定位查找

log格式:

打开一个main_log,可看到如下信息:

抓到log后,从左到右依次是:日期,时间,进程号,线程号,log优先级,log标签

知道这些信息对我们分析log有什么用呢?

(1)时间信息:通过时间戳可以帮助快速定位问题,缩短分析时间

(2)进程号、线程号:不同的进程和线程的信息可能不会一起打印,可通过进程和线程ID将相关信息放在一起分析

(3)Log优先级:log一般划分为V,D,I,W,E

   其中V代表Verbose 冗余、提醒消息,D表示Debug 调试消息,I表示Information 普通消息,W表示Warn 警告消息,E表示Error 错误消息,可通过搜索错误信息来筛选信息

常见异常分析:

1.程序崩溃(提示停止运行):启动崩溃,交互崩溃等,可在events_log中搜索crash关键字初步定位问题

2.程序闪退:stack overflow,物理内存不足等被kill,sys_log 搜索Exception 或者 died关键字定位对应包名,进而定位问题

3.ANR问题:主要分三个方向:memoryleak(是否为低内存),CPU block(CPU使用率过高)、iowait(IO流使用过于频繁),可搜索关键字ANR

  ANR出现的情况主要有以下两种:

   A  界面操作按钮的点击等待响应时间超过5秒

   B  HandleMessage回调函数执行超过10秒,BroadcasterReciver里的onRecive()方法处理超过10秒

4.强制关闭(FC):Fatal问题Fatal: 比较严重了,很多都很动态库和空指针有关,一般会接下来打印"Build fingerprint:"或”NullPointerException“

下面分享一个比较容易懂的例子,大家可以学习一下log分析定位的思路(http://redmine.meizu.com/issues/496607?from_search=true

用例场景:com.android.phone 无响应

1.通过关键字缩小范围

  无响应问题:通过FATAL关键字可查到如下log:

2.翻译log

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference

 at com.android.internal.telephony.dataconnection.ApnSetting.equals(ApnSetting.java:551)

翻译以上两句可知:再调用ApnSetting的equals方法时引入了空指针的问题

3.开发修复(有时候查看开发修复的方式也能帮助我们积累定位和分析的能力)

修复方法:现修改为变量初始化时和之前项目保持一致做非空初始化

修复方法:对ApnSetting中的String类型的变量做一个非空初始化

部分修改如下:

三.adb抓取log的常用命令

在手机无响应无法进入工程模式的时候可用如下方法去启动mtklog

1.adb shell am start -n com.mediatek.mtklogger/.MainActivity

--》此命令打开MTK平台工程模式的其他log,如audio log,需要先开启root权限

2.adb shell am broadcast -a com.mediatek.mtklogger.ADB_CMD -e cmd_name start/stop --ei cmd_target 7

--》start表示开启,stop表示关闭;7可改为1/2/4,分别代表MobileLog/ModemLog/NetworkLog)

3.导出log文件

抓取完相应的log文件后就可以用:adb pull /sdcard/mtklog

小贴士: 获取开关状态,快速查看是否打开了mobile log

adb shell getprop debug.MB.running/adb shell getprop debug.mdlogger.Running-->值为0,表示未开始抓取相关log,值为1表示开始抓取相关log

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342