当前位置: 首页 > news >正文

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

序言

在使用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的话可以用系统开发中的功能。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/245341.html

相关文章:

  • 基于 Redis 的幂等性设计:SpringBoot @Async 在高并发 MySQL 日志存储中的应用
  • Mac 系统 Node.js 安装与版本管理指南
  • RAG检索前处理
  • GO后端开发内存管理及参考答案
  • adb 查看android 设备的硬盘及存储空间
  • 录制mp4 rospy
  • 2025年中国人工智能发展研究报告:技术突破、行业变革与全球竞争新格局
  • Spring 路由匹配机制详解:时间复杂度从 O(n) 降至 O(log n)
  • 学习STC51单片机36(芯片为STC89C52RCRC)智能小车3(PWM差速小车)
  • Redis 安装实践:基于鲲鹏 ARM 架构 Ubuntu 环境
  • 随记:sw2urdf插件导出urdf模型在ROS2-rviz2显示
  • 电流传感器在工业自动化中的应用
  • Tess4J:基于 Java 的 OCR 解决方案
  • 【doris】doris集成ranger控制权限,ranger配置无法存储doris密码password信息
  • 代码随想录训练营第三十天 | 452. 用最少数量的箭引爆气球 435. 无重叠区间 763.划分字母区间
  • 【Net】OPC UA(OPC Unified Architecture)协议
  • 图片压缩工具类
  • 深入剖析 C++ 默认函数:拷贝构造与赋值运算符重载
  • 你管这玩意叫网络?网络图解
  • CANoe入门(1)-- 创建新CANoe工程
  • 开源综合性网络安全检测和运维工具-TscanClient
  • 【Python打卡Day36】信贷项目的神经网络训练@浙大疏锦行
  • docker-compose容器单机编排
  • NLP基础与词嵌入:让AI理解文字(superior哥深度学习系列第13期)
  • Apache 反向代理Unity服务器
  • 使用VSCode开发FastAPI指南
  • pandas 字符串列迁移至 PyArrow 完整指南:从 object 到 string[pyarrow]
  • JFLASH 提示license 配置操作 Sorry,no valid license for I-Flash found.
  • ABP vNext + Redis Streams:构建实时事件驱动架构
  • 桥接模式深度解析:Java设计模式实战指南与抽象实现分离架构设计