Mtklog 分析(学习)
常见log异常类型: JE NE KE EE(external(modem) exception)
一、常见应用异常搜索关键信息
1. 常见应用crash的(系统提示***已停止运行) ,可以在main log中或crash_log中直接搜索“ fatal exception” ;也可以在event_log中搜索am_crash快速定位到问题
2.应用闪退
应用闪退一般有如下三种原因:
1).目前遇到最多的主要是因为low memory killer机制在内存达到一定阈值的时候会将大于对应adj进程给kill掉(这个一般在kernel log中搜索关键字“ low memory kill ”就可以确认哪些是因为lmk机制而被kill);一般此情况下跟性能有关……。 【待实验验证】
2). 关联进程被kill导致;
一般在进行闪退分析时可以在events log中搜索关键字" am_kill "或者" in dying proc "等
3).应用本身逻辑有执行finish动作而出现,比如点击锁屏通知进入某个对应界面而界面没有出现,这种情况需要分析对应的main_log、event_log;
a:根据出现闪退时间点在event_log搜索am_resume_activity等am_*_activity相关判断这过程中应用是否有启动和退出的动作。 【待实验验证】
b: 在main_log或sys_log搜索“ACT-AM_”相关信息查看对应activy生命周期相关信息。【待实验验证】
其次就根据log跟踪对应代码流程……
二、ANR (Application Not Responding)
1.ANR种类
1). Key Dispatch Timeout (8s)
按键或触摸事件在特定时间内无响应(origin:5s)
KEY_DISPATCHING_TIMEOUT = 8*1000
2) .Broadcast Timeout
BroadcastReceiver在特定时间内无法处理完成
BROADCAST_FG_TIMEOUT: 10s
BROADCAST_BG_TIMEOUT: 60s
按键和广播事件时间内未响应,时间限定定义在ActivityManagerService.java类中
3).Service Timeout (20s)——-小概率类型
Service在特定的时间内无法处理完成
service时间内未响应时间限定在ActiveServices.java类中
SERVICE_TIMEOUT = 20*1000;
2.ANR产生原因 【不是很懂】
1)应用进程有一个主线程(main thread)和一个信息队列(main message queue) main thead == activity thread
2)主线程负责处理像Draw、Listen、receive等UI事件
3)主线程负责从消息队列中取出信息并分发它
4)主线程在完成当前信息处理之前,不会再取信息队列中的信息
5)如果主线程在处理当前信息时卡住,没有及时分发,ANR就会出现
3.如何避免ANR
1):UI线程尽量只做跟UI相关的工作
2):耗时的工作(比如数据库操作,I/O,连接网络或者别的有可能阻碍UI线程的操作)把它放入单独的线程处理
3):尽量用Handler来处理UIthread和别的thread之间的交互
4.UI线程主要包括哪些?
1).Activity:onCreate(), onResume(), onDestroy(), onKeyDown(), onClick()等
2).AsyncTask: onPreExecute(), onProgressUpdate(), onPostExecute(), onCancel等
3).Mainthread handler: handleMessage(), post*(runnable r)等
4).other
5.分析ANR需要的log
1). MTKlog,主要是其中的Aee_exp和MobileLog
2). Trace.txt文件(data/anr目录下)或者bugreport日志(使用adb bugreport > bugreport.txt或者GAT工具输出)
一般当出现异常(JE\SWT\NE\KE等)时,会在手机中的/data/aee_exp目录下保存异常的db。 对于异常的类型和具体信息,需要通过GAT工具解析db档案。
6.ANR分析流程
Mtklog 分析(学习)的更多相关文章
- Android之mtklog分析
Android之mtklog分析 [海外场测反馈][xxx]动态测试时对比机xxxx拨打测试机xxxxx自动挂断电话 工作中遇到一个掉话的问题,需要分析log,log比较大,我也没法上传,就简答的讲讲 ...
- 20155207 《网络对抗》exp4 恶意代码分析 学习总结
20155207 <网络对抗> 恶意代码分析 学习总结 实践目标 1.是监控你自己系统的运行状态,看有没有可疑的程序在运行. 2.是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件 ...
- ELK日志分析 学习笔记
(贴一篇之前工作期间整理的elk学习笔记) ELK官网 https://www.elastic.co ELK日志分析系统 学习笔记 概念:ELK = elasticsearch + logstas ...
- 基于FP-Growth算法的关联性分析——学习笔记
数据挖掘 比之前的Ap快,因为只遍历两次. 降序 一.构建FP树 对频繁项集排序,以构成共用关系. 二.基于FP树的频繁项分析 看那个模式基出现过几次.频繁度. 看洗发液的 去掉频繁度小的 构建洗发液 ...
- java.util.BitSet 详细分析 学习笔记
1,BitSet类 大小可动态改变, 取值为true或false的位集合.用于表示一组布尔标志. 此类实现了一个按需增长的位向量.位 set 的每个组件都有一个 boolean 值.用非负的 ...
- Linux内核分析第一次学习报告
Linux内核分析第一次学习报告 学生 黎静 学习内容 1.存储程序计算机工作模型 冯诺依曼体系结构:核心思想为存储程序计算机. CPU抽象为for循环,总是执行下一条指令,内存保存指令和数据,CPU ...
- Python 读取UCI iris数据集分析、numpy基础学习
python基础.numpy使用.io读取数据集.数据处理转换与简单分析.读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值 ...
- 深入浅出 - Android系统移植与平台开发(十) - led HAL简单设计案例分析
作者:唐老师,华清远见嵌入式学院讲师. 通过前两节HAL框架分析和JNI概述,我们对Android提供的Stub HAL有了比较详细的了解了,下面我们来看下led的实例,写驱动点亮led灯,就如同写程 ...
- 20155207王雪纯《网络对抗》Exp4 恶意代码分析
20155207 <网络对抗> 恶意代码分析 学习总结 实践目标 1.是监控你自己系统的运行状态,看有没有可疑的程序在运行. 2.是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件 ...
随机推荐
- POJ 2084 Catalan数+高精度
POJ 2084 /**************************************** * author : Grant Yuan * time : 2014/10/19 15:42 * ...
- Linux已经全然统治了这个世界:反对开源社区愚不可及
原文来自:http://readwrite.jp/archives/9977 不管一个企业多强大,它都不存在和开源社区抗衡的实力 十年前.Unix占有最快的计算机世界排名前10位的五席,以及超级计算机 ...
- 【quickhybrid】API多平台支撑的实现
前言 在框架规划时,就有提到过这个框架的一些常用功能需要支持H5环境下的调用,也就是需要实现API的多平台支撑 为什么要多平台支撑?核心仍然是复用代码,比如在微信下,在钉钉下,在quick容器下, 如 ...
- redis基础(一)
redis是一种流行的非关系内存型数据库,拥有非常高的读写性能,下面是本人学习的总结. redis的类型 键:redis的所有的键都是string类型: 值:五种类型 string:字符串类型:一个s ...
- ASP.NET Core 异常重试组件 Polly
Polly 是一种 .NET 弹性和瞬态故障处理库,允许开发人员以流畅和线程安全的方式表达策略,如重试,断路器,超时,隔离隔离和备用,Polly 适用于 .NET 4.0,.NET 4.5 和 .NE ...
- java类中获取ServletContext的方法
起因是我想要获取一个相对路径,需要用到servletContext的getRealPath()方法,于是上网搜索,找到两种方法来获取ServletContext. 方法1:第一种方法是这样的: Ser ...
- 自学Python2.6-深浅拷贝
Python 深浅拷贝 一.深浅拷贝- 数字.字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy n1=123 n2=n1 # # ...
- 0基础手把手教你搭建webpack运行打包项目(未完待续)
这些天在项目之余的时间学习了webpack打包项目的东西,非常荣幸的找到一些大神的文章来学习,死劲嚼了几天,终于略知一二.在以后的工作上还需继续学习,下面我将分享我这几天学到的一点东西,希望能让我一个 ...
- 小白的Python之路 day1 表达式if ... else ,while循环,for循环
表达式if ... else 一.用户登陆验证 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # 提示输入用户名和密码 # 验 ...
- NoSQL数据库
NoSQL数据库 1.NoSQL简介 最初表示"反SQL"运动,用新型的非关系型数据库取代关系数据库:现在表示"Not only SQL"关系和非关系型数据库各 ...