- Perfetto 是 Android 10 中引入的全新平台级跟踪工具
- Perfetto是下一代系统性能的分析工具,它取代了systrace。 仍完全支持SYSTRACE,可以将Perfetto理解为systrace的升级版,可以用来替代传统的 systrace 工具
- systrace会将生成 Trace.html 文件,使用 Chrome 将这个文件打开进行分析
https://perfetto.dev/
与 atrace 不同,perfetto 旨在提供更细粒度的控制和更丰富的数据收集选项。ptrace是二进制的
#有的手机traced功能默认是关闭状态的
adb shell setprop persist.traced.enable 1
# 20s
adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s \ sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace
atrace 是 Android Trace 的缩写
atrace时文本可视化的
# 使用adb 命令(atrace)抓起systrace的方法
adb shell atrace view am wm freq idle sync sched aidl gfx -a com.android.camera -t 5 > anddemo.trace
capturing trace... done
TRACE:
# tracer: nop
#
# entries-in-buffer/entries-written: 365613/365613 #P:8
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID TGID CPU# |||| TIMESTAMP FUNCTION
代码中
Debug类只能监控 Java函数调用, 而Trace类底层是使用 atrace 实现,其追踪的函数会包含了应用及系统的Java 和Native函数,并且底层基于ftrace还可以追踪cpu的详细活动信息。
Debug.startMethodTracing,data/data/package下边生成trace文件
Trace.begainSection、Trace.endSection()