本节课目标
logcat抓取原理
实战掌握分析logcat的异常日志信息
分析ANR的异常

安卓系统的logcat日志文件

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

android日志系统提供了记录和查看系统调试信息的功能,日志都是从各种软件和
一些系统的缓冲区(程序运行时保存数据,重启后不会存在,保存在内存里面)中记录下来的,缓冲区可以通过logcat命令来查看和使用
使用方式:
[adb] logcat [参数] [-fiter-spec>].

logcat是以如下开头的:
1.---------beginning of xxx

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

logcat缓冲区
android log输出量巨大,特别是通信系统的log,因此,android把log输出到不同的缓冲区,
目前定义了四个log缓冲区:
Radio:输出通信系统的log(蓝牙,wifi,3G,4G这些)
System:输出系统组件的log
Events:输出event模块的log(手指触摸屏幕或按手机硬件的键
Main:所有java层的log(不属于上面3层的log),如想输出通信系统的log:adb logcat-b radio
默认log输出(不指定缓冲区的情况下)是输出System和Main缓冲区的log
一般应用程序的日志查看也是看MAIN模块
命令:如果需要指定输出某个缓冲图的内容,那么用adb logcat -b 缓冲区名就行了
输出的日志由五部分组成:
1.写下日志时的时间,如上中01-1109:39:35.209。adb locat -v time才能在日志中显示时间
2.优先级,在Android中,日志的优先级从低到高分以下几种:
V -Verbose(啰嗦,最低级别,开发调试中的一些详细信息,仅在开发使用,不可在发布产品中输出)
D Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)
l Info(信息,一般提示性的消息)
W -Warning(警告)
E -Error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)
3.标签(tag),标明日志发起者和方便日志的过滤筛选,如上中ActivityManager。
4.PID(进程ID),如上中491。
5.正文,本日志的主体内容。
测试人员只要看E就行了
------------------------------------------——————————————————————
3_APP日志文件分析 随笔 第1张

1)crash:崩溃
定位到崩溃的日志信息:使用adb logcat -v time > D:*.txt
然后去文件中查找:fatal,定位到这行,然后将所有E级别的信息截取出来发给开发

2)何为ANR?
ANR全名Application Not Responding,也就是应用无响应,当操作在一段时间内系统无法处理时,系统层面会弹出右图那样的ANR对话框

为用户在主线程长时间被阻塞时提供处理交互,提高用户体验
Android系统一种自身检测机制
3_APP日志文件分析 随笔 第2张

怎么定位错误日志信息:
定位到崩溃的日志信息:使用adb logcat -v time > D:*.txt
然后去文件中查找:anr in,定位到这行,这里面我们可以看到发生anr之前和之后的CPU使用率。
然后将所有E级别的信息截取出来发给开发?
不,根据这些信息,开发无法定位到什么原因,这个时候我们就需要去查看另外的一个文件,
进入android shell环境,进入/data/anr,下面会有个traces.txt追踪文件,把这个拉取到电脑上面进行查看,然后检查一下两个文件的时间是否能够对应上。

注意:traces.txt文件存在一个问题,只能保留最新一次发生NR的信息,那么怎么办呢?
进入adb shell,进入/data/system/dropbox,可以看到有data_app_anr或者crash的文件,将他们拉取到本地,选取文件给开发。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄