logcat/trace.txt日志文件的分析

Posted kxx-1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logcat/trace.txt日志文件的分析相关的知识,希望对你有一定的参考价值。

1.logcat日志文件

>android日志系统提供了记录和查看系统调试信息的功能,日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用

使用方式:

adb logcat [<option>]...[<filter-spec>]..

>logcat是以如下开头的:

   ---------beginning of xxx

>开发者选项,有个叫做“日志记录器缓冲区大小”,默认是256k,日志是循环写入环形缓冲区的,通常情况下,写满时最旧的日志会被删除以给新输出的日志留内存空间

2.log缓冲区

android log输出量巨大,特别是通信系统的log,因此android把log输出到不同的缓冲区。

目前定义了四个log缓冲区:

Radio:输出通信系统的log        如,nfc、3G/4G  蓝牙、wifi等

System:输出系统组件的log      如,调用摄像头等

Events:输出event模块的log     如,触摸事件、按键事件

Main:输出java层的log(不属于上面三层的log),测试app过程着重关注Main模块

注意:

默认输出Main缓冲区log,如想输出通信系统的log:

adb logcat -b  radio  >  D: estlog_radio.txt       -- 重定向输出日志

3.logcat日志文件分析

输出的日志格式如下:

技术图片

3.1由5部分组成:

>写下日志时的时间

日志中添加时间:adb logcat   -v  time   >  D: estlog.txt 

>优先级,在Android中,日志的优先级从低到高分以下几种:

V--verbose(啰嗦,最低级别,开发调试中的一些详细信息,仅在开发中使用,不可在发布产品时使用)

D--Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)

I--Info(信息,一般提示性的消息)

W--Warning(警告)

E--Error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)

>标签(tag),标明日志发起者和方便日志的过滤筛选,如上中的ActivityManger,开发自己定义的,方便查找

> PID(进程ID),如上中的491

>正文,本日志的主体内容

3.2 crash崩溃

>现象:提示xx停止运行

>如何在日志中检索?

出现崩溃后,输出最新日志,搜索 FATAL EXCEPTION关键字(代表严重错误)、crash关键字 ,然后将找到的E级别日志(方法调用栈)全部提交给到开发

3.3ANR无响应

>现象:当操作在一段时间内系统无法处理时,系统层面会弹出下图那样的ANR对话框

技术图片

>为用户在主线程长时间被阻塞时提供处理交互,提高用户体验

>Android系统一种自身检测机制

>如何在日志中检索?

技术图片

 

 

出现ANR后,输出最新日志,搜索ANR in 关键字,但是根据E级别日志开发往往不能定位ANR问题,需要找到上图红框中标出的traces.txt文件,从而找到方法调用栈,使得开发能够定位问题

>>如何找到traces.txt?

adb shell 

cd /data/anr

ls

找到traces.txt 文件,exit

拉取到本地:adb  pull  /data/anr/traces.txt   D: est

注意:

traces.txt时间和缓冲区日志时间会有差异(几秒),因为属于两个不同的模块,系统不会同步写

traces.txt只能保留最近一次的anr信息

>解决只能保留最近一次的anr信息的方法,dropbox 

adb  shell 

依次找到  /data/system/dropbox 目录,如图:

技术图片

 

 

 data_app开头的是第三方手动安装的应用异常信息,然后就可以把/data/system/dropbox目录拉取出来然后给到开发人员

===============================================

需要说明的是:

>安卓手机碎片化严重,不能保证每台手机都有Dropbox

>不是所有手机都是root权限

上述两种情况下:

其实直接把traces.txt 文件拉取出来就好:adb  pull  /data/anr/traces.txt   D: est

说到底,如果app出现问题的话logcat系统级别的日志(adb logcat   -v  time   >  D: estlog.txt )  会体现出来,除非开发做了异常捕获,那就需要问开发是不是做了异常捕获,捕获到了哪里~

 

以上是关于logcat/trace.txt日志文件的分析的主要内容,如果未能解决你的问题,请参考以下文章

Linux的日志文件分析

深入分析Oracle数据库日志文件(1)

Linux系统日志文件分析!

如何查看及分析网站IIS日志文件

Linux常用命令日志文件分析

日志分析_使用shell完整日志分析案例