Android中如何通过perfetto抓取trace

这篇具有很好参考价值的文章主要介绍了Android中如何通过perfetto抓取trace。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,perfetto的作用

Perfetto的作用是提供一个性能检测和跟踪分析工具集,用于Android、Linux和Chrome平台。

Perfetto是Google推出的一款全新的平台级跟踪分析工具,它从Android 10开始被引入,旨在替代之前的systrace工具。Perfetto的核心特点包括用户空间到用户空间的跟踪协议,基于protobuf序列化机制的数据填充到共享内存缓冲区,以及支持获取内置数据源(如ftrace、atrace、logcat)的信息。此外,Perfetto还提供了SDK和Library供C++应用程序使用,以实现定制化的性能监测。

在Perfetto中抓取trace的方法通常涉及使用特定的命令行工具,其中:

-o 参数指定了抓取文件的输出目录和文件名。
-t 参数则用来设置抓取的时间,例如设置为20秒。

要开始使用Perfetto抓取trace,你需要确保你的设备运行的是Android 9.0(API级别28)或更高版本的操作系统。通过适当的命令行工具和参数配置,你可以启动Perfetto来记录系统跟踪信息。这些信息随后可以用于分析和优化应用程序和系统的性能

二、抓取以及查看trace文件网页

新版的
1.https://ui.perfetto.dev/

总体上是新版好用,如果遇到别人分享的trace文件新版打开文件失败可以试下旧版或者看下是不是中文文件名导致的

三、使用步骤

1.1 启动跟踪服务
Perfetto 基于自 Android 9 (P) 以来可用的平台服务,但默认情况下仅在 Android 11 (R)。 在 Android 9 (P) 和 10 (Q) 上,您需要执行以下操作以确保 在开始之前启用跟踪服务:

# Needed only on Android 9 (P) and 10 (Q) on non-Pixel phones.
adb shell setprop persist.traced.enable 1

1.2 记录跟踪,trace抓取的3中方式
命令行工具:
直接使用设备上的命令: /system/bin/perfetto
用户界面工具:
通过 Perfetto UI 中的记录页面。
使用设备上的系统跟踪应用

1.2.1 通过 Perfetto UI 记录跟踪

浏览器打开 ui.perfetto.dev,然后从左侧菜单中选择“记录新跟踪”。

如果不确定,请首先打开“CPU”选项卡下的“计划详细信息”。(这里生成命令需要的 CONFIG_FILE ,可查看 Recording settings )
确保设备已连接,然后选择“添加 ADB 设备”。一旦您的设备 已成功配对(您可能需要在设备上允许USB调试),选择“开始录制”按钮。
Android中如何通过perfetto抓取trace,Android应用进阶篇,androidNavigation:文件导航选项:
 Open trace file:导入protobuf 文件(通过perfetto生成的)
 Open with legacy UI:导入systrace文件(通过systrace生成的)
 Record new trace:Perfetto UI录制protobuf文件(后面会单独介绍)
Current Trace:当前trace选项
 Show timeline:显示时间线
 Download:下载此trace文件
 Legacy UI:以Systrace报表打开
 Query(SQL):输入sql命令进行过滤信息
Example Traces:trace示例
 Open Android example:打开android的trace示例
 Open Chrome example:打开chrome的trace示例
Metrics and auditors:指标过滤器
Support:支持项
 Controls:分析面板控制类型
 Documentation:文档解读
 Report a bug:提交发下你的bug
Bottom Action:底部支持功能
 Toggle Perf Debug Modle:切换性能调试模式
 Number of pending SQL queries:待执行的SQL查询数
 service worker:缓存离线服务

Perfetto UI 录制protobuf文件
Android中如何通过perfetto抓取trace,Android应用进阶篇,androidAndroid中如何通过perfetto抓取trace,Android应用进阶篇,androidAndroid中如何通过perfetto抓取trace,Android应用进阶篇,android
Android中如何通过perfetto抓取trace,Android应用进阶篇,android
1.2.2 通过 cmdline 记录跟踪

adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s \
sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory

/system/bin/perfetto 这个下面单独说明
Android中如何通过perfetto抓取trace,Android应用进阶篇,android
简单模式:
Android中如何通过perfetto抓取trace,Android应用进阶篇,android使用类似与systrace。如果需要设定时间加-t,默认跟踪10s。-o输出文件的位置,使用/data/misc/perfetto-traces/,否则perfetto没有权限访问, 然后pull出文件,在Perfetto UI中打开使用。如下命令可直接使用,通常这种信息对大多数情况都够用了。

生成.perfetto-trace文件:

adb shell perfetto gfx input view wm am ss sched freq idle binder_driver res rs  -o /data/misc/perfetto-traces/trace -t 10s

导出.perfetto-trace文件:

adb pull /data/misc/perfetto-traces/trace ~/trace

普通模式:
Android中如何通过perfetto抓取trace,Android应用进阶篇,android
借助config文件配置要调试的内容,命令行如下,其中config.pbtx为config file,可以借助Perfetto UI的recording setting(Perfetto UI)生成,或者在Perfetto UI中的redording settings中设置后好,在recording command 中copy所有内容,在terminal中直接copy执行即可。

cat config.pbtx | adb shell perfetto -c - --txt -o /data/misc/perfetto-traces/trace.perfetto-trace

Perfetto 为我们提供了一种更方便更加灵活的配置化式的 trace 抓取方案: trace config 。让我们先来看一下官方提供的 config 样例 config.pbtx:

duration_ms: 10000
 
buffers: {
    size_kb: 8960
    fill_policy: DISCARD
}
buffers: {
    size_kb: 1280
    fill_policy: DISCARD
}
data_sources: {
    config {
        name: "linux.ftrace"
        ftrace_config {
            ftrace_events: "sched/sched_switch"
            ftrace_events: "power/suspend_resume"
            ftrace_events: "sched/sched_process_exit"
            ftrace_events: "sched/sched_process_free"
            ftrace_events: "task/task_newtask"
            ftrace_events: "task/task_rename"
            ftrace_events: "ftrace/print"
            atrace_categories: "gfx"
            atrace_categories: "view"
            atrace_categories: "webview"
            atrace_categories: "camera"
            atrace_categories: "dalvik"
            atrace_categories: "power"
        }
    }
}
data_sources: {
    config {
        name: "linux.process_stats"
        target_buffer: 1
        process_stats_config {
            scan_all_processes_on_start: true
        }
    }
}

注意,这是一个以 .pbtx 为后缀名的文件,使用时,我们需要先将这个文件 push 到手机目录下,而后执行如下抓取命令:

adb push config.pbtx /data/local/tmp/config.pbtx
adb shell 'cat /data/local/tmp/config.pbtx | perfetto --txt -c - -o /data/misc/perfetto-traces/trace.perfetto-trace'

可以看到,我们通过这种的方式也是抓取成功的,通过 config 的方式我们可以自定义抓取规则,更大的契合了各种业务的需要。

1.2.3 System Tracing 的系统级应用抓取
启用开发者选项(如果尚未启用此选项)
打开开发者选项设置
在调试部分中,选择 System Tracing (系统跟踪)。此时会打开 System Tracing 应用,其中显示了应用菜单。
在应用菜单中,启用 显示 “快捷设置”图块
Android中如何通过perfetto抓取trace,Android应用进阶篇,android启用录制跟踪记录开关,该图块会变为启用状态,并且系统会显示常驻通知,通知您系统正在录制跟踪记录
完成这些操作后,可通过停用录制跟踪记录开关来停止跟踪
Android中如何通过perfetto抓取trace,Android应用进阶篇,android
使用 ADB 导出报告

adb pull /data/local/traces/ .

推荐通过perfetto命令抓取perfetto trace
执行抓取命令

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
 
adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace

使用 perfetto 工具,您可以通过 Android 调试桥 (adb) 在 Android 设备上收集性能信息。使用 adb shell perfetto … 命令调用 perfetto 工具。 perfetto 从您的设备上收集性能跟踪数据时会使用多种来源,例如:文章来源地址https://www.toymoban.com/news/detail-834068.html

使用 ftrace 收集内核信息
使用 atrace 收集服务和应用中的用户空间注释
使用 heapprofd 收集服务和应用的本地内存使用情况信息

到了这里,关于Android中如何通过perfetto抓取trace的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Fiddler如何抓取手机http/https请求数据包(IOS,Android保姆级教程)

    1.开启Fiddler远程连接 2.设置完远程连接,重启Fiddler,更新配置 3.保持手机和电脑在同一个局域网 4.给手机装证书 5.点击下载证书 6.给证书命名 7.点击确定,确认安装成功 Fiddler主菜单Tools -- Options -- Connections -- 勾选 Allow remote computers to connect 弹出的框是确认启用远程连接,配置

    2024年02月04日
    浏览(30)
  • KubeSphere通过提供一站式微服务应用管理、DevOps持续集成/交付、网络策略和安全管理、日志、Tracing等功能模块,帮助企业轻松应对多样化的工作负载、异构集群环境、复杂的网络拓扑和流量控

    作者:禅与计算机程序设计艺术 2019年7月KubeSphere项目宣布启动,其目标是打造一个面向IT自动化运维领域的开源容器平台,以满足多种应用场景和运行环境需求。KubeSphere通过提供一站式微服务应用管理、DevOps持续集成/交付、网络策略和安全管理、日志、Tracing等功能模块,帮

    2024年02月07日
    浏览(34)
  • Python爬虫的应用场景与技术难点:如何提高数据抓取的效率与准确性

    作为专业爬虫程序员,我们在数据抓取过程中常常面临效率低下和准确性不高的问题。但不用担心!本文将与大家分享Python爬虫的应用场景与技术难点,并提供一些实际操作价值的解决方案。让我们一起来探索如何提高数据抓取的效率与准确性吧! 爬虫应用场景: 爬虫在各

    2024年02月12日
    浏览(39)
  • 《吐血整理》高级系列教程-吃透Fiddler抓包教程(27)-Fiddler如何抓取Android7.0以上的Https包-中篇

    1.简介 上一篇中,宏哥讲解和分享了一些如何快速解决的临时应急的的方法,但是小伙伴或者童鞋们是不是觉得是一些头痛医头脚痛医脚的方法,治标不治本,或者是一些对于测试人员实现起来比较有一定难度。所以今天宏哥再介绍和分享一下治本的方法。 2.追本溯源 要想从

    2024年02月19日
    浏览(42)
  • android trace —— 简介,适合新人

    本文主要是对 trace 进行简单介绍,介绍其简单使用方法;如何抓trace;如何去看 trace等 trace 是 Android4.1 中新增的性能数据采样和分析工具。它可帮助开发者收集 Android 关键子系统(如 SurfaceFlinger/SystemServer/Kernel/Input/Display 等 Framework 部分关键模块、服务,View系统等)的运行信

    2024年01月19日
    浏览(26)
  • Android 分析Trace文件步骤

    当我们通过 Android 设备或 Android Studio 导出 ANR 日志文件后,就需要对其进行分析,以确定 ANR 产生的具体原因。以下是分析 ANR 日志文件的具体步骤: 1. 打开 traces.txt 文件 使用文本编辑器(例如 Sublime Text、Notepad 等)打开 ANR 日志文件,查看其中的内容。在日志文件中,包含

    2024年02月14日
    浏览(31)
  • Android 通过adb命令查看应用流量

            通过adb shell ps -A  |  grep 包名  来获取app的 pid号         使用 adb shell cat /proc/#pid#/net/dev 命令 来获取流量数据 备注: Recevice: 表示收包 Transmit:  表示发包 bytes: 表示收发的字节数 packets: 表示收发正确的包量 errs: 表示收发错误的包量 drop: 表示收发丢弃的包量 wla

    2024年01月25日
    浏览(34)
  • Android---Android 是如何通过 Activity 进行交互的

    相信对于 Android 工程师来说,startActivity 就像初恋一般。要求低,见效快,是每一个菜鸟 Android 工程师迈向高级 Android 工程师的必经阶段。经过这么多年的发展,startActivity 在 google 的调教下已经变得愈发成熟,对工程师的要求也越来越高。、 通过设置不同的 启动模式 可以实

    2024年02月07日
    浏览(33)
  • 【ARM Trace32(劳特巴赫) 使用介绍 15 -- 通过 nRESE从CPU第一条指令开始Debug】

    请阅读 【嵌入式开发学习必备专栏 】 在 TRACE32 系统中, nRESET 是一个非常重要的概念,它直接关联到目标系统(通常是一个微处理器或微控制器)的硬件复位信号。 nRESET 通常表示为负逻辑(即 “n” 前缀通常表示负逻辑,“RESET” 表示复位信号),意味着当信号为低电平时

    2024年04月28日
    浏览(24)
  • 如何通过Android手机查找IP地址

    我们要如何获取IP地址?其实有一个简单的方法,在Android手机上查找IP地址也很简单,只需要几个步骤,公网IP地址的查询过程更加简单。 1、Android手机查找私有IP地址 我们先来看看你的安卓手机的私有IP地址。通常私有IP地址对于 Android 智能手机是唯一的。 可以通过以下步骤

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包