Perfetto是systrace 的替代,可以实现systrace的功能, 同时提供了更强大的功能, 个人认为最大优势是可以支持长时间tracing。本文只介绍如何抓trace, 不包含分析trace。
Android Q及P
先设置:
adb shell setprop persist.traced.enable 1
Android Q以上perfetto 默认运行, 无需上述步骤。
执行perfetto
两种方式,两种方式不能混用:
- 简单模式:使用类似与systrace。如果需要设定时间加 -t, 默认跟踪10s。 -o 输出文件的位置, 使用/data/misc/perfetto-traces/, 否则perfetto没有权限访问, 然后pull出文件, 在Perfetto UI中打开使用。如下命令可直接使用,通常这种信息对大多数情况都够用了。
adb shell perfetto gfx input view wm am ss sched freq idle binder_driver res rs -o /data/misc/perfetto-traces/trace -t 10s
adb pull /data/misc/perfetto-traces/trace ~/trace
- 普通模式:借助config 文件配置要调试的内容, 命令行如下, 其中config.pbtx为config file, 可以借助Perfetto UI的recording setting (Perfetto UI) 生成,或者在Perfetto UI中的redording settings中设置后好, 在recording command 中copy 所有内容, 在terminal中直接copy执行即可。
cat config.pbtx | adb shell perfetto -c - --txt -o /data/misc/perfetto-traces/trace.perfetto-trace
参考文档:
Quickstart: Record traces on Android - Perfetto Tracing Docs