抓取命令
抓取
adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 10s 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
打开工具
PerfettoUI
快捷键
可以查看工具栏左侧部分,以下是常用部分:
W:放大
S:缩小
A:左移
D:右移
M:选中当前鼠标点击的时间段
pip to top 功能很实用,可以远距离几项聚合来看。还有搜索功能,知道名称效率更高。
主要内容分类
线程状态
- 线程状态
- 执行方法
Counter 计数采用部分信息
一个程序里面全局的一个变量值展示,比如在surfaceFlinger的vsync 的部分值
asycn 执行块部分信息
比如ValueAnimator
对应代码
Trace.asyncBegin 和 Trace.asyncTraceEnd
跨进程通讯的发起端与接受端跳转
-
同步
binder transaction
binder reply -
异步 (binder 有个三角形标记)
binder transaction async
binder async rcv
代码中添加trace
fw 添加
工具类路径
system/core/libcutils/include/cutils/trace.h
方法
- ATRACE_ALL()
- ATRACE_NAME(name)
- atrace_begin(mTag, name) 对应宏定义 ATRACE_BEGIN(name)
- atrace_end(mTag) 对应宏定义 ATRACE_END()
前两种方法颗粒度较大,要考虑好作用域 (方法或代码块),内部使用 后面两种方法。
- ATRACE_INT(mTag, int)
- ATRACE_FORMAT(fmt,…)
因为显示的值都是固定的,所以提供了第6个方法,可以动态显示内容,比如时间等,路径framework/native/include/gui/TraceUtils.h文章来源:https://www.toymoban.com/news/detail-812458.html
app 中添加
Trace.java
traceBegin
traceEnd文章来源地址https://www.toymoban.com/news/detail-812458.html
到了这里,关于Perfetto 使用 笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!