Anroid Perfetto

一、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,如 10s5000ms1m);
  • 后续的 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 文件

  1. 打开 Perfetto 官方分析 UI:https://ui.perfetto.dev/
  2. 点击「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

  • 打开方式

https://ui.perfetto.dev/

相关推荐
爱笑鱼14 小时前
Binder(二):AIDL 生成的 Proxy、Stub 和 Parcel 到底在做什么?
android
爱笑鱼14 小时前
Binder(一):一次方法调用,究竟怎样跨进程执行?
android
壮哥_icon15 小时前
【Android 系统开发】使用 BAT 脚本高效自动化管理 /system/priv-app/ 系统应用(安装与卸载)
android·运维·自动化
用户693717500138416 小时前
Claude Code终端日志Token占用实测:一个过滤器砍掉60%-90%
android·前端·后端
蝉蜕日记17 小时前
AccumuPDF高级版 v2.57 | 视图文转换PDF,合并分割压缩
android·智能手机·pdf·生活·软件需求
吐了啊取名字太难17 小时前
美颜系统AI修图本地跑并支持Mac、win、安卓、iOS不卡顿
android·人工智能·windows·数码相机·mac·ai编程
阿pin18 小时前
Android随笔-Retrofit
android·retrofit
想取一个与众不同的名字好难18 小时前
安卓自定义颜色选择器
android
我命由我1234519 小时前
Android 开发问题:java.lang.NoSuchMethodError:No virtual method readAllBytes()
android·java·java-ee·kotlin·android studio·android-studio·android runtime
李艺为19 小时前
展锐相机DreamCamera2模式精简
android·java