首页 > 其他分享 >Perfetto Trace抓取

Perfetto Trace抓取

时间:2024-03-25 20:00:46浏览次数:26  
标签:ftrace Trace 抓取 atrace perfetto config events categories Perfetto

1. Perfetto简介

Perfetto 是一个用于 Android 系统的性能跟踪工具,可以帮助开发者分析系统性能和调试问题。
Perfetto 是 Android 10 中引入的全新平台级跟踪工具。这是适用于 Android、Linux 和 Chrome 的更加通用和复杂的开源跟踪项目。
在低于Android R的版本上面默认是关闭的,需要先执行命令打开:

adb shell setprop persist.traced.enable 1

对比Systrace 有很多优点:

进程名称显示完整
Binder跨进程点击跳转,跟踪方便,不需要类似systrace一样跟踪Binder跳转时需要挨个查看线程号
支持置顶你感兴趣的线程,放在一起分析更容易
看线程被谁唤醒非常方便
可以同时跟踪内存/电压/event log等信息

2. 抓取方式

perfetto 命令包含以下两种模式:

轻量模式:只能选择一部分数据源,具体来说就是 atrace 和 ftrace。但此模式可提供类似于 systrace 的接口。
普通模式:从协议缓冲区获取其配置,并且可以让您使用 atrace 和 ftrace 之外的数据源,从而更加充分地利用 perfetto 的功能。

2.1 轻量模式

在轻量模式下使用 perfetto 的一般语法如下:

adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ] [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]…

抓取:
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

在这里插入图片描述

参考链接:
抓取Systrace方法汇总

2.2 普通模式

在普通模式下使用 perfetto 的一般语法如下:
adb shell perfetto [ --txt ] --config CONFIG_FILE

选项说明
- -config CONFIG_FILE 或 -c CONFIG_FILE指定配置文件的路径。
- -txt指示 perfetto 将配置文件解析为 pbtxt。此标记为实验性标记,不建议您在正式版中启用此标记。

执行命令

adb push perfetto–config.pbtx /data/misc/perfetto-traces/
adb shell perfetto --txt --config /data/misc/perfetto-traces/perfetto_config.pbtx --out /data/misc/perfetto-traces/1.perfetto-trace
adb pull /data/misc/perfetto-traces/1.perfetto-trace

配置文件:perfetto_config.pbtx

buffers: {
    size_kb: 522240
    fill_policy: RING_BUFFER
}
buffers: {
    size_kb: 2048
    fill_policy: RING_BUFFER
}
data_sources: {
    config {
        name: "linux.process_stats"
        target_buffer: 1
        process_stats_config {
            scan_all_processes_on_start: true
        }
    }
}
data_sources: {
    config {
        name: "android.log"
        android_log_config {
        }
    }
}
data_sources: {
    config {
        name: "android.surfaceflinger.frametimeline"
    }
}
data_sources: {
    config {
        name: "android.game_interventions"
    }
}

data_sources: {
    config {
        name: "android.packages_list"
    }
}

data_sources: {
    config {
        name: "linux.ftrace"
        ftrace_config {
            ftrace_events: "sched/sched_switch"
            ftrace_events: "power/suspend_resume"
            ftrace_events: "sched/sched_wakeup"
            ftrace_events: "sched/sched_wakeup_new"
            ftrace_events: "sched/sched_waking"
            ftrace_events: "power/cpu_frequency"
            ftrace_events: "power/cpu_idle"
            ftrace_events: "power/gpu_frequency"
            ftrace_events: "raw_syscalls/sys_enter"
            ftrace_events: "raw_syscalls/sys_exit"
            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: "input"
            atrace_categories: "view"
            atrace_categories: "wm"
            atrace_categories: "am"
            atrace_categories: "hal"
            atrace_categories: "res"
            atrace_categories: "dalvik"
            atrace_categories: "bionic"
            atrace_categories: "pm"
            atrace_categories: "ss"
            atrace_categories: "database"
            atrace_categories: "aidl"
            atrace_categories: "binder_driver"
            atrace_categories: "binder_lock"
            atrace_categories: "sched"
            atrace_categories: "freq"
            atrace_apps: "*"
        }
    }
}
duration_ms: 10000
write_into_file: true
file_write_period_ms: 2500
max_file_size_bytes: 256000000
flush_period_ms: 30000
incremental_state_config {
    clear_period_ms: 5000
}

在这里插入图片描述

3. 打开Trace文件

打开网站:
https://ui.perfetto.dev/
将trace文件拖入即可
在这里插入图片描述
在这里插入图片描述

标签:ftrace,Trace,抓取,atrace,perfetto,config,events,categories,Perfetto
From: https://blog.csdn.net/qq_45649553/article/details/137017106

相关文章

  • python抓取百度翻译
    第一步点击立即翻译查看请求的翻译接口第二步复制接口域名后的请求链接部分第三步点击开发者工具栏上的source选项卡,找到右边栏的XHR/fetchBreakpoints,点击后面的+号粘贴字符串第四步点击立即翻译找到调用接口的代码第五步如果找到不是真正的调接口的代码,需要上他的......
  • AOSP平台编写Android-ebpf程序(tracepoint)的一些map定义和使用问题,导致map和prog无法
     前言本片文章并不主要讲解在AOSP平台ebpf程序的整个编写流程,只是一些的map的定义使用问题,如有需要可查看,aosp平台的整个下载流程,以及简单的程序的编译和如何push到手机运行,这位up是我在ebpf领域探索的领路人,本站ID:LiujiaHuan13,如果有需要up本人后面会考虑写一篇aosp程序书写......
  • 利用Scala与Apache HttpClient实现网络音频流的抓取
    概述在当今数字化时代,网络数据的抓取和处理已成为许多应用程序和服务的重要组成部分。本文将介绍如何利用Scala编程语言结合ApacheHttpClient工具库实现网络音频流的抓取。通过本文,读者将学习如何利用强大的Scala语言和ApacheHttpClient库来抓取网络上的音频数据,以及如......
  • 【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack
    AzureAppService.NETProfiler在AppService服务中,如果部署了.NET应用,平台有一个非常好的工具可以查看请求的性能分布及异常时的StackTraces。进入路径:AppServiceAzureOverview-->  Networking(网络)-->Troubleshoot(排除故障)--> Collect.NETProfilerTrace......
  • 使用 gdb 查看 coredump 文件的 backtrace
    问题背景程序退出过程中卡死,但是一旦开启log就无法复现问题。于是考虑获取程序卡死时的coredump文件,分析其调用栈。一种方法是在程序卡死时,用kill命令向其发送一个信号,使程序产生coredump文件。前提Target上可以产生core文件(如/tmp/<executable-name>-<pid>.core),......
  • 用wireshark抓取HTTP的get和post方法流量包
    任务1:下载安装WireShark网络抓包分析工具,并分别用该工具抓取HTTP的get和post两种页面的网络流量包,并将HTTP的request和response里相应各信息内容抓取在实验报告里并解释各内容的功能和含义。打开wireshark,开始抓包。抓HTTP的包在搜索框中搜索HTTP即可,request和response分开搜......
  • Using the TRACE_EVENT() macro (Part 1)
    如果你对tracepoint后面的机制感兴趣,可以阅读关于TRACE_EVENT的三篇文章。这一系列文章对tracepoint后面的机制进行了详细讲解,以及其使用方法都有涉及。该系列文章出现在lwn.net上。注意,不要被英文吓住了,我保证,你认真读完这系列文章后,tracepoint后面的秘密不在是秘密。Using......
  • 解说Shopify如何外部抓取商品数据并批量上架
    以Noracora一款商品为例:https://noracora.com/products/gray-plain-crew-neck-casual-dresses-8078364A列:填充至每个SKUHandleTips:即商品详情页展示给用户看的title部分截取使用“-”转换url地址(字符全小写)B列:仅填充单个商品首行TitleC列:仅填充单个商品首行Body(HTML)......
  • 鲁班乐标数据抓取程序
    有老板找我开发的一套鲁班乐标数据下载程序,其实就是一套爬虫程序,作为一名资深码农来说这事不难,只是对方需要一个软件操作界面,希望自定义爬取条件。刚开始我第一个想到的是用Python来写,但是对方需要一个操作界面,当然Python也可以完成,由于我主要还是C#.Net为主,因此想到用C#开发试......
  • 【总结】对大量函数进行trace调用流程+国际AIS3题
    现在混淆的主要目的之一就有让逆向分析人员不清楚函数的调用流程,给你一堆函数,加了高强度的OLLVM,更不能看了。那么Trace跟踪技术就显得很重要的,如果清楚了函数调用流程,那么逐个分析,距离成功不就很快了。万事开头难,逆向程序难在不知道从哪开始。前几天做了一道AIS3的题目,内含50个......