一、Perfetto 基础介绍
adb shell perfetto 是 Android 系统中调用 Perfetto 追踪工具的核心方式,Perfetto 是 Google 推出的高性能系统追踪工具(替代旧版 Systrace),支持追踪 CPU、内存、GPU、进程 / 线程调度、网络、系统调用、UI 渲染等全维度系统行为,适配 Android 10+(低版本需手动部署二进制文件)。
二、核心用法(adb shell perfetto)
1. 快速录制(极简模式)
直接使用预定义追踪类别,快速生成 trace 文件(适合简单调试):
# 录制10秒,输出到默认可写目录,追踪CPU调度、频率、UI渲染等基础维度
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
关键参数说明:
-o:指定 trace 文件输出路径(/data/misc/perfetto-traces/是系统默认可写目录);-t:录制时长(支持s/ms/m,如10s、5000ms、1m);- 后续的
sched/freq等是预定义追踪类别,常用类别:
| 类别 | 追踪内容 |
|---|---|
sched |
CPU 进程 / 线程调度 |
freq |
CPU 频率变化 |
idle |
CPU 空闲状态 |
am |
ActivityManager 事件 |
wm |
WindowManager 事件 |
gfx |
图形渲染(VSync、GPU 绘制) |
view |
View 测量 / 布局 / 绘制 |
memory |
内存分配 / 回收 |
binder_driver |
Binder IPC 通信 |
dalvik |
ART 虚拟机(GC、JIT) |
2 导出 trace 文件到电脑
adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace e:/temp/Perfetto/Perfetto01 # 导出到电脑
三、分析 trace 文件
- 打开 Perfetto 官方分析 UI:https://ui.perfetto.dev/
- 点击「Open trace file」上传导出的文件;


四、app 如何加trace
//java 加trace
import android.os.Trace;
public void onDrawFrame(GL10 gl10) {
mIndex++;
Trace.traceBegin(Trace.TRACE_TAG_APP, "onDrawFrame_"+mIndex);
.....
Trace.traceEnd(Trace.TRACE_TAG_APP);
}
//ndk native 加 trace
#include <android/trace.h>
void HelloVK::render() {
ATrace_beginSection("render");
....
ATrace_endSection();
}
注意**,**app 加的trace 要起作用, 需要参数指定(-a app_pkg), 不加的话adb shell perfetto 抓不到app加的trace
adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 1s -a com.hzqg.ardisplay sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory

总结
- adb命令
adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 1s -a com.hzqg.ardisplay 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 e:/temp/Perfetto/Perfetto07
- 打开方式