adb 之日志文件分析(五)
一,logcat日志文件
1,addroid日志系统提供了记录和查看系统调试信息的功能,日志都是从各种软件和一些系统的缓冲区(内存)中记录下来的,缓冲区可以通过logcat命令来查看和使用
2,在开发者选项中,有个选项叫做“日志记录器缓冲区大小”,默认是256K,日志是循环写入到缓冲区的,在通常情况下,写满是最旧的日志会被删除,给新的日志留存空间
3. logcat 日志是以 beginning of xxx 开头的
4,logcat缓冲区:android log输出量很大,特别是通信系统的log,因此adroid把log输出到不同的缓冲区,目前定义了4个log的缓冲区:
radio:输出通信系统的log 通信系统如:蓝牙,wifi,3g、4g等
system:输出系统组件的log 系统组件的权限比较高,和系统相关的都会产生日志
events: 输出event模块的log 这个是事件模块,只有是手机对手机的操作都会产生事件
main : 所有java层的log 只要是java语言编写的,都是产生log,他不属于上面的3层内容
默认log输出(不指定缓冲区的情况下)是输出到system和main缓冲区的log
5,抓取通信设备的log: adb logcat -b radio > d:\test\radio.log 如果不加-b 会默认抓取main日志
6,抓取main模块的日志:adb logcat > d:\test\main.log 这里抓取的日志不显示时间,那么怎么显示时间呢?用如下命令
adb logcat -v time > d:\test\main_time.log

7,日志的输出格式:由五部分组成,如图:

a,写下日志的时间,如:04-03 13:58:17.146
b,优先级,在android中,日志的优先级从低到高分以下几种
V---Verbose(啰嗦,最低级别,开发调试中一些详细的信息,在开发中使用,不可在发布产品中使用)
D---Debug(调试,用于调试信息,可在发布产品中关闭,比较常见)
I--info(信息,一般是提示性的信息)
W--Warning(警告)
E--Error(错误,已经出现可影响运行的错误,如应用crash时输出的日志)
c,标签(tag),表明日志发起者和方便日志的过滤筛选,如图中所示
d,PID(进程ID),如图中所示4513
e,正文,本日志的主体内容
每一行的日志都由这些内容组成
8,崩溃事件,在手机的体现为:
很抱歉,“xxx”已经停止运行了------因为没有相应的app复现,所以只能手写,无截图
这是崩溃,不是闪退,闪退没有提示框,都是crash 错误
我们可以把日志打印出来:adb logcat -v time > > d:\test\main_crash.log
在日志中我们可以搜索EXCEPTION这个关键字,用来找到具体错误的内容

9,anr事件,在手机上的体现为:

说明:anr全名是application not responding,也就是应用无响应,当操作在一段时间内系统无法处理时,系统层面会弹出上图的ANR对话框
1,为用户在主线程长时间被阻塞时提供处理交互,提高用户体验
2,android系统一种自身检测机制
日志:adb logcat -v time >d:\test\main_anr.log
定位日志:搜索ANR in 如图

下面还有load:负载情况
接着下面是cpu的使用率

这里的日志给开发还不能够定位问题,开发 要定位问题就找到方法调用栈,那么这里并没有方法调用栈,不过通过这里可以了解是否CPU原因产生的
在这个日志中我们可以看到下图的输出:

这说明anr的日志在系统的/data/anr/traces.txt目录下,通过这个命令就可以看tracse.txt中的日志,但是这里并不全,而且还非常多

那么我们可以使用adb pull 命令把让拉取出来

在这个日志中可能和adb logcat出现时间差,如果日志在3s内,就没问题,如果时间太长,就是需要重新找自己需要的日志,为什么时间会有差别,是因为adb logcat和main模块两个是不同的模块,不会同步
在traces.txt日志中我们可以搜索TIMED_WAIT,就可以找到方法调用栈,这不是我们可以分析的,直接给开发就可

所以要提交bug,需要提交logcat文件和tracse文件,tracse这个文件只会保留最新的anr信息,新的anr信息会把原来的anr信息覆盖掉,所以我们在测试的时候,如出现多次anr信息,我们就要用到dropbox
我们可以使用adb shell 进入到android系统中,然后执行cd /data/system/dropbox 进入到dropbox中

我们可以通过adb pull 把这些文件都拉取出来分析,这里既可以分析anr,也可以分析crash,万能的
我们可以通过时间来判断哪些是先产生的,哪些是后产生的
adb 之日志文件分析(五)的更多相关文章
- [转载]mysql慢日志文件分析处理
原文地址:mysql慢日志文件分析处理作者:maxyicha mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysq ...
- /VAR/LOG/各个日志文件分析
/VAR/LOG/各个日志文件分析 author:headsen chen 2017-10-24 18:00:24 部分内容取自网上搜索,部分内容为自己整理的,特此声明. 1. /v ...
- Android ANR log trace日志文件分析
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_25804863/article/ ...
- Linux日志文件分析
---恢复内容开始--- 日志保存位置 默认 var/log目录下 主要日志文件 内核及公共消息日志:message 计划任务日志:cron 系统殷桃日志:demsg 邮件系统日志:maillog 用 ...
- IIS 日志文件分析
先安装下文参考资料中的log parser studio 然后就可以针对日志文件进行sql语句的查询了. 各页面访问量排行 ) FROM '[LOGFILEPATH]' where cs-uri-st ...
- Hadoop日志文件分析系统
Hadoop日志分析系统 项目需求: 需要统计一下线上日志中某些信息每天出现的频率,举个简单的例子,统计线上每天的请求总数和异常请求数.线上大概几十台 服务器,每台服务器大概每天产生4到5G左右的日志 ...
- 【app】Appium日志文件分析
Appium在和客户端及手机端进行通讯的时候会输出很多日志,可以通过点击主面板的Get Raw Logs得到其原始日志: 现在我们另存到其他路径,并且以notepad工具打开进行查看 Appium日志 ...
- Linux系统——日志文件
日志文件的分类 (1)内核及系统日志 由系统服务rsyslog管理,根据去主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置. /etc/rsyslog ...
- Android中对Log日志文件的分析[转]
一,Bug出现了, 需要“干掉”它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只要你会看bug, a ...
随机推荐
- 文件传送协议FTP
文件传送协议FTP 1.1.概述 文件传送协议 FTP (File Transfer Protocol) 是因特网上使用得最广泛的文件传送协议. FTP 提供交互式的访问,允许客户指明文件的类型与格式 ...
- VUE实现Studio管理后台(七):树形结构,文件树,节点树共用一套代码NodeTree
本次介绍的内容,稍稍复杂了一点,用VUE实现树形结构.目前这个属性结构还没有编辑功能,仅仅是展示.明天再开一篇文章,介绍如何增加编辑功能,标题都想好了.先看今天的展示效果: 构建树必须用到递归,使用s ...
- Web前端经典面试试题(二)
上次由于时间有限只分享了一部分的前端面试题,所以本篇继续分享前端经典面试试题 一. 栈和队列的区别? 栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的. 队列先进先出,栈先进后出. 栈 ...
- DIV的失去焦点(blur)实现
用防抖实现DIV鼠标移出消失 由于div标签本身不支持onblur事件,所以对于点击一个按钮弹出的div,我们想要当这个div失去焦点的时候,让它消失不能使用的onblur来实现. 但是可以利用 ...
- 纯CSS实现带返回顶部右侧悬浮菜单
这是我做个人网页的时候加上的带返回顶部右侧悬浮菜单效果,如下图, 使用工具是Hbuilder. 代码如下: <!DOCTYPE html> <html> <head> ...
- C++ const用法,看这一篇就够了!
本文主要介绍const修饰符在C++中的主要用法,下面会从两个方面进行介绍:类定义中使用const.非类定义中使用const 1. 非类定义中使用const 非类定义中使用const是指:在除了类定义 ...
- frida入门总结
一.Frida概述 Frida是一款轻量级HOOK框架,可用于多平台上,例如android.windows.ios等. frida分为两部分,服务端运行在目标机上,通过注入进程的方式来 ...
- Cisco asa组建IPSEC for ikev1
IPSec的实现主要由两个阶段来完成:--第一阶段,双方协商安全连接,建立一个已通过身份鉴别和安全保护的通道.--第二阶段,安全协议用于保护数据的和信息的交换. IPSec有两个安全协议:AH和ESP ...
- django 从零开始 3认识url解析
在视图函数中定义一个函数abc 接受得到的参数 并显示在页面上 urls中设置 在页面会显示出错误 找不到该url ,原因是django1版本中使用的是url和re_path ,突然django2变 ...
- Django 图片上传到数据库 并调用显示
环境:Django2.0 Python3.6.4 建立项目,数据库设置,就不说了. 直接上代码: 在models.py中,需要建立模型,这里使用了ImageField字段,用来存储图片路径,这个字段继 ...