Systrace是分析Android性能问题的神器,Google IO 2017上更是对其各种强推. 是分析卡顿掉帧问题核心工具,只要能提供卡顿现场,systrace就能很好定位问题。
Systrace是基于内核ftrace机制来实现的一套trace工具,android上层实现了Trace类,用于把trace信息写入ftrace buffer,最后再通过ftrace buffer抓取出来。
1.使用python版本抓取trace
进入systrace.py所在目录(一般位于android-platform_tools下的systrace文件夹下),打开终端
输入命令
python systrace.py [options] [category1] [category2] ... [categoryN]
注意:python必须是2.x版本。
-o 后直接是文件名,如果是目录会进行判断目录是否存在,不存在会报错
category你需要抓取模块的类型
示例:
python systrace.py gfx rs irq input view sched am wm camera dalvik freq idle load sync workq power mmc disk sm audio hal video app res binder_driver binder_lock -b 20480 -t 5 -o trace.html
python systrace.py -a com.android.systemui -b 20480 -t 5 -o my_systrace_report.html sched freq idle am wm gfx view binder_driver hal dalvik camera input res
命令执行完后,systrace.py 所在地方会生成一个trace.html
打开谷歌浏览器, 在Chrome浏览器的地址栏中输入 chrome://tracing,点击Load选择需要的trace文件即可
Trace的X轴表示时间,Y轴以进程进行分组,进程组内是各个线程,可以收缩和展开。每个应用进程包含每个线程所包含的所有跟踪标记,包括基于启用跟踪类别的高级跟踪事件的层次结构。
界面介绍
使用android自带的抓取trace的方法
使用使用android自带的抓取trace的方法,这种方法适用于抓取长trace,最长支持30分钟,但是可能会影响性能。
a.开启设备并进入开发者模式
b.找到“系统追踪” ,然后选择打开“显示快捷图块”、“长期追踪”开关;
c.在“类别”中可以选择需要记录的tag。
d.下拉状态栏点击“系统跟踪”图块,即可开始抓取,再次点击图块即可停止抓取;
e.最后可使用adb pull /data/local/traces 导出文件。