使用adb 抓取perfetto-trace的注意事项

发布于:2025-06-13 ⋅ 阅读:(18) ⋅ 点赞:(0)

序言

在使用adb命令抓取perfetto-trace的时候需要注意,需要有root权限。

如果出现这个错误。

Failed to open /data/misc/perfetto-traces/xxx. If you get permission denied in /data/misc/perfetto-traces, the file might have been created by another user, try deleting it first. (errno: 13, Permission denied)

可以尝试下面的方法

adb root
adb shell rm -rf /data/misc/perfetto-traces/
adb shell setprop persist.traced.enable 0
 
 
等待一段时间
 
 
adb shell setprop persist.traced.enable 1
adb unroot

命令解释

  1. adb root
    作用:以 root 权限重启 adbd(ADB 守护进程),使后续通过 adb shell 执行的命令具有 root 权限。
    说明:不是所有设备都支持这个命令,只有解锁了 bootloader 或使用了用户调试版本(userdebug 或 eng)的系统才允许 root 权限。
  2. adb shell rm -rf /data/misc/perfetto-traces/
    作用:删除 /data/misc/perfetto-traces/ 目录及其内容。
    说明:
    Perfetto 是 Android 的系统级性能追踪工具。
    这个目录通常存储着之前生成的 Perfetto 性能追踪文件(.perfetto-trace)。
    删除该目录是为了清理旧数据,避免干扰新的追踪操作。
  3. adb shell setprop persist.traced.enable 0
    作用:关闭 Android 系统中的 traced 服务(Perfetto 后台守护进程)。
    说明:
    setprop 是设置系统属性的命令。
    persist.traced.enable 是一个持久化属性,控制是否启用 traced 服务。
    设置为 0 表示禁用;设置为 1 表示启用。
    使用 persist. 前缀意味着该设置会在重启后仍然生效。
    👇 等待一段时间
    目的:让系统有时间完全停止 traced 服务。
    说明:这是为了确保下一条启用命令可以干净地重新启动服务。
  4. adb shell setprop persist.traced.enable 1
    作用:重新启用 traced 服务。
    说明:这会触发系统重新启动 Perfetto 的后台服务,准备进行新一轮的性能追踪。
  5. adb unroot
    作用:恢复 adbd 到非 root 模式。
    说明:执行完需要 root 权限的操作后,恢复到普通权限,提升安全性。
    ✅ 整体流程用途总结:
    这段命令的典型用途可能是:

清理并重置 Android 系统上的 Perfetto 跟踪服务,以便进行新的性能分析。

常用于以下场景:

清理之前的 Perfetto 跟踪文件;
确保 Perfetto 服务被正确重启;
在自动化测试或性能基准测试前准备环境。

如果在非root的手机上执行上面的命令会出现下面的提示。
在这里插入图片描述

抓取

下面是抓取20秒的。

adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s sched freq idle am wm gfx view

保存到电脑

adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace E:\perfetto\out3.perfetto-trace

其他方法

如果手机没有root的话可以用系统开发中的功能。
在这里插入图片描述