结构化Log分析
Android开发时Log对问题分析是很重要的。如果APK比较简单,那么用文本编辑器或者Android Studio中自带Log查看器就可以了。但是如果程序比较复杂,各个模块都添加了Log, 如果这时再用文本编辑器来查看Log, 往往就会一头雾水了。特别是对于Anroid系统开发者,Val报了一个Bug后,附带的Log都是整个系统的,往往都是上百兆的。
用文本或者AndroidStudio的Log查看器,只能查看或者简单查找。而QTrace提供了结构化分析Log的工具,简单的说就是,QTrace会把Log编程一个数据库,然后可以进行结构化查询与分析,可以按进程,Tag,时间,关键字进行查找,也可以快速按进程或Tag过滤生成子Log视图。同时由于Log编程一个数据库,还可以使用QTrace提供的脚本框架,方便的编写Log的分析程序。
QTrace Logcat基本用法
1).捕获Log
QTrace中点击菜单 文件->Logcat->打开默认Logcat 或者另外新建一个Logcat数据库文件
连接上手机
在Logcat的左侧工具栏面板,点击捕获Logcat按钮[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RJgd7x2c-1596078596850)(https://i.loli.net/2020/07/18/emogZbNFYXKL58J.png)]
在Logcat中就可以看到,Logt打印了
2).导入Log
在Logcat的左侧工具类面板,点击菜单按钮;
执行导入文件,选择log文件并导入
对于MTK平台Log, 往往有多个文件,可以执行导入Logcat目录,并选择要导入的Log文件,QTrace会完成文件的导入,并对Log进行排序。
3).查看Log
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J3qgGKVe-1596078596856)(https://i.loli.net/2020/07/18/5RWIJEtTlqKChQO.png)]
-
QTrace中,对不同进程的Log都有用不同的颜色进行区分。对于Android系统Log, 是所有程序的log都放在一起的,用这个颜色区分,可以让我们只关注相关进程的Log.
-
QTrace中可以对Log设置书签(快捷键Ctrl+F2), 设置了书签的Log背景为淡黄色。
-
QTrace支持解析event log, event log就是像[99,4262,320]这样的一堆数字,无法直接看出意思的,鼠标放到对应的event log上,就会弹出event log各字段的含义
-
QTrace支持为log添加备注,双击Log, 在Log的开头编辑注释。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w2ieUBK8-1596078596859)(https://i.loli.net/2020/07/18/3i4mj1h2MkrPOTC.png)]
-
QTrace可以方便的选择拷贝Log。 双击Log, 然后选择Log中的文本
-
QTrace会分析pid,得到Pid对应的进程名然后显示。
Log高级功能
1).生成只包含某个进程的Log子视图
选择一条Log
执行右键菜单"过滤LogView"->“添加PID条件”, 点击按钮“在窗口显示”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-StMtkDxm-1596078596860)(https://i.loli.net/2020/07/18/9BFgM5QSmhetIvw.png)]
这样pid为768的log都会显示到一个窗口中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YNO9Ff34-1596078596862)(https://i.loli.net/2020/07/18/dO7qthibGpAZkwX.png)]
当然还可以用tag,时间,log中的关键字来编辑更加复杂的过滤条件,来生成Log子视图.
2).搜索Log
在Logcat中,按Ctrl+F弹出搜索框,可以搜索对应的Log.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mNTOAjdV-1596078596863)(https://i.loli.net/2020/07/18/u3gx2OrZEeMoQLR.png)]
如果点击“显示LogView”, 也会将搜索结果Log显示到一个Log子视图中。跟上一小节的结果一样。
Log脚本分析
QTrace为处理Log提供了较多的脚本,点击 “右键菜单->脚本”, 可以选择对应的脚本,并执行。
下面列几个比较常用的脚本。解决脚本可以快速的分析出问题,并将一些数据可视化,可以让程序员更加快速的找到问题。同时资深程序员也可以将经验写成脚本,用于帮助一般程序员的分析问题。
1.分析Log
点击右键菜单->脚本->分析Log
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OKOpaxg9-1596078596864)(https://i.loli.net/2020/07/18/xPnhrZAcGkQELyO.png)]
选择要执行的脚本,比如"Exception", 点击“运行脚本”, 就会找出所有Exception相关的Log.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-edVsYD3T-1596078596864)(https://i.loli.net/2020/07/18/1Dsdy35UoxmpHut.png)]
2.MemoryGC分析(内存回收分析)
通过对MemoryGC相关的Log进行分析,可以分析内存泄漏等问题。
右键菜单,执行 脚本->MemoryGC图表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vWwCSPPO-1596078596865)(https://s1.ax1x.com/2020/07/20/UfBCEF.png)]
上图这个例子:占用内存Occupy持续变大,这种情况很有可能出现内存泄漏。
另外还需要关注Paused Time,如果Pasued Time太大,那么就可能出现卡顿情况。
3.数据图表化分析
很多Log带有数据,比如电池电量,内存数据,时长, 计数,以及各种Sensor的值, 等等。如果能将这些数据图表化,那么往往就能一眼看出问题。
这里以电池信息为例,来说明下"数据图表"脚本的用法
如下是电池信息的Event log
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JsRHETGb-1596078596866)(https://s1.ax1x.com/2020/07/20/Uf6UhD.png)]
如果直接分析,很难看出电池的变化情况。
选择一条电池Log, 点击右键菜单 “脚本->数据图表”
点击按钮“从当前Log生成”, 这样自动完成数据图表的的分析设置。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ldyMWVt7-1596078596867)(https://s1.ax1x.com/2020/07/20/Uf6jgJ.png)]
图表结果如下: