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