zoukankan      html  css  js  c++  java
  • 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导致;

    图片1

    一般在进行闪退分析时可以在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工具输出)

    一般当出现异常(JESWTNEKE等)时,会在手机中的/data/aee_exp目录下保存异常的db。 对于异常的类型和具体信息,需要通过GAT工具解析db档案。

    6.ANR分析流程

    图片2

    1

    1

    2

    3

    4

    5

    6

    7

    8

  • 相关阅读:
    复制表结构及数据
    mysql 字段名是关键字 报错
    mysql 截取字符串
    《官方资料》 例如:string 函数 、分组函数
    mysql event 入门
    Spring国际化
    Python学习记录
    精选股文
    为VS定制一个自己的代码生成器
    房产常识
  • 原文地址:https://www.cnblogs.com/xiyuan2016/p/6740521.html
Copyright © 2011-2022 走看看