抓取Systrace的设置步骤和方法

2023-12-25 06:32

本文主要是介绍抓取Systrace的设置步骤和方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过Systrace的功能,来debug performance问题,抓取方法如下:

分析性能问题时,需要在userdebug load上抓systrace;

 

开机后,请先开启“开发者模式(Developer option)”

然后再usb连接手机到电脑,cmd命令行下执行adb root,接着立即进入Developer operation,找到USB Debugging,将该选项去掉,然后再勾选上;

完了之后adb remount一下,如果成功,那么userdebug load就已经具备debug权限了,如果手机reboot了,则adb root的权限要重新获取,方法同上。

 

抓取Systrace的设置步骤和方法如下:

 

设置TAG步骤:

首先进入"设置->开发者选项(Settings->Developer options)",在"监控(MONITORING)"这个分类栏目下面找到“启用跟踪(Enable Traces)"这个菜单项,点击进去;

这时会弹出一个复选框列表,有一些TAG列出来供debuger来选择,请按需要来勾选,而不要全部都勾选,不然会导致系统性能被拉低

 

如果是UI绘制相关的问题,请勾选Graphics,View,或者单独勾选View(这样的话就只会打出android view system的执行方法)

如果是分析输入事件响应慢及更随性相关的问题,请勾选View,Input;

如果是Activity切换,Window切换相关的问题,请勾选Window Manager,Activity Manager;

 

做完上述设定之后,才能真正开始抓Systrace,抓取的方法有两种:

方法一:先用ftrace_all_in_one这个tool抓ftrace,然后将抓到的ftrace文件SYS_TRACE用02-parse.bat解析成trace.html,

如何抓取ftrace请参考FAQ: ID: FAQ04673  如何抓取Ftrace

 

方法二:在Linux 系统环境下的android sdk目录下的tools/systrace目录下,执行systrace.py  (如果有windows环境下可正常使用的systrace package,则抓取方法与此相同)
./systrace.py –b 20480 –t 10 -o out_put.html


上述命令中:

-t 10表示抓10s内的systrace,可根据实际需要,自行设定操作复现问题持续的时间值,
-b 20480 表示buffer size,如果抓到的systrace用Chrome浏览器打开后发现解析有问题,可以尝试加大buffer size,操作时间越长,-b buffer size就要跟着增大

-o out_put.html是最后生成的文件名,可根据需要自己设定生成的trace文件名

详细的参数可以参考:http://developer.android.com/tools/help/systrace.html

 

注意:

1.只要问题复现了,可以不必再抓Systrace了,复现3次左右即可,如果是那种app第一次启动慢的问题,就只抓一次即可;

2.如果你要profile的apk是新安装的,那么需要先执行如下两个命令之后,再开始抓systrace:

adb shell stop

adb shell start

 

如何抓取OpenGL trace?

如果是在debug 硬件加速HWUI绘图相关的问题,很多情况下需要一并抓取OpenGL trace,将OpenGL ES的方法调用以图形化的方式显示在Systrace中,

 

如果要抓OpenGL trace,还需要做如下设置:

进入Developer options->Enable OpenGL traces,选择Systrace(Graphics),

做了上述设置之后,需要重新启动framework才能生效,重启framework的方法有如下两种:
1、执行如下两个命令:

adb shell stop   

adb shell start

2、如果下上面这两个命令后手机发生灰屏,那么就再重新开机,重新做Systrace(Graphics)设置之后,采用如下方法:

adb shell ps  查看system_server的pid,

然后adb shell kill -9 pid_of_system_server

这样手机就会自动重新启动framewok,作用跟上面的stop/start命令一样

 

注意:

1.做了上面所有设置之后,framework重启完毕,请再检查一下最开始设置的"启用跟踪(Enable traces)"里面的那些TAG是否有被勾选,要抓OpenGL trace,必须勾选Enable traces里面Graphics 这个TAG,如果framework重启之后,之前所设置的TAG被重置了,请再按照要求设置一遍即可。

2.再提醒一遍,Enable traces里面的tag勾选数量,会影响机器本身的performance,tag勾选得越多,则对performance影响越大,performance会变差,所以一般情况下如果是测试画面绘制相关和滑动界面相关的场景,只需开启Graphics,Input,View这3个tag即可,具体情况可以参考上面的介绍。

这篇关于抓取Systrace的设置步骤和方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/534533

相关文章

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2