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

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T