——查阅过无数的systrace资料后,我觉得这个工具介绍篇,可能不会让大家特别满意,但是当且算一个学习阶段的纪录吧,希望大家一起学习进步
Systrace
Systrace是分析Android设备的性能的主要工具
作用
用于收集可帮助您检查原生系统进程的详细系统级数据,例如CPU调度、磁盘活动、应用线程等,并解决掉帧引起的界面卡顿
本质
它是 atrace 的主机端封装容器,是用于控制用户空间跟踪和设置 ftrace 的设备端可执行文件,也是 Linux 内核中的主要跟踪机制。
systrace 使用 atrace 来启用跟踪,然后读取 ftrace 缓冲区并将其全部封装到一个独立的 HTML 查看器中
官网
https://source.android.google.cn/devices/tech/debug/systrace
https://developer.android.google.cn/studio/command-line/systrace
extra:
什么是atrace?什么是ftrace?
ftrace 是一种调试工具,用于了解 Linux 内核中的情况;而 atrace (frameworks/native/cmds/atrace) 使用 ftrace 来捕获内核事件;
官网简单的介绍地址:https://source.android.google.cn/devices/tech/debug/ftrace
抓取方法
抓取信息方式有以下三种
1.systrace.py
2.AndroidStudio Systrace工具
3.自定义trace
1.systrace.py
使用python命令以及systrace.py工具
systrace.py工具位置在 sdk/platform-tools/systrace;
python systrace.py [options] [categories]
示例:
调用systrace来记录10秒钟内的设备进程,包括图形进程,并生成mynewtrace.html报告
具体命令如下
python systrace.py --time=10 -o mynewtrace.html gfx
参数信息
options参数表
options | description |
---|---|
-o < FILE > | 输出的目标文件 |
-t N, –time=N | 执行时间,默认5s |
-b N, –buf-size=N | buffer大小(单位kB),用于限制trace总大小,默认无上限 |
-k < KFUNCS >,–ktrace=< KFUNCS > | 追踪kernel函数,用逗号分隔 |
-a < APP_NAME >,–app=< APP_NAME > | 追踪应用包名,用逗号分隔 |
–from-file=< FROM_FILE > | 从文件中创建互动的systrace |
-e < DEVICE_SERIAL >,–serial=< DEVICE_SERIAL > | 指定设备 |
-l, –list-categories | 列举可用的tags |
-h , --help | <