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

相关文章

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

Python Selenium动态渲染页面和抓取的使用指南

《PythonSelenium动态渲染页面和抓取的使用指南》在Web数据采集领域,动态渲染页面已成为现代网站的主流形式,本文将从技术原理,环境配置,核心功能系统讲解Selenium在Python动态... 目录一、Selenium技术架构解析二、环境搭建与基础配置1. 组件安装2. 驱动配置3. 基础操作模

Pandas进行周期与时间戳转换的方法

《Pandas进行周期与时间戳转换的方法》本教程将深入讲解如何在pandas中使用to_period()和to_timestamp()方法,完成时间戳与周期之间的转换,并结合实际应用场景展示这些方法的... 目录to_period() 时间戳转周期基本操作应用示例to_timestamp() 周期转时间戳基

在 PyQt 加载 UI 三种常见方法

《在PyQt加载UI三种常见方法》在PyQt中,加载UI文件通常指的是使用QtDesigner设计的.ui文件,并将其转换为Python代码,以便在PyQt应用程序中使用,这篇文章给大家介绍在... 目录方法一:使用 uic 模块动态加载 (不推荐用于大型项目)方法二:将 UI 文件编译为 python 模

Python将字库文件打包成可执行文件的常见方法

《Python将字库文件打包成可执行文件的常见方法》在Python打包时,如果你想将字库文件一起打包成一个可执行文件,有几种常见的方法,具体取决于你使用的打包工具,下面就跟随小编一起了解下具体的实现方... 目录使用 PyInstaller基本方法 - 使用 --add-data 参数使用 spec 文件(

IDEA之MyBatisX使用的图文步骤

《IDEA之MyBatisX使用的图文步骤》本文主要介绍了IDEA之MyBatisX使用,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录一、idea插件安装二、IDEA配置数据库连接(以mysql为例)三、生产基础代码一、idea插

Python的pip在命令行无法使用问题的解决方法

《Python的pip在命令行无法使用问题的解决方法》PIP是通用的Python包管理工具,提供了对Python包的查找、下载、安装、卸载、更新等功能,安装诸如Pygame、Pymysql等Pyt... 目录前言一. pip是什么?二. 为什么无法使用?1. 当我们在命令行输入指令并回车时,一般主要是出现以

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

通过C#获取Excel单元格的数据类型的方法详解

《通过C#获取Excel单元格的数据类型的方法详解》在处理Excel文件时,了解单元格的数据类型有助于我们正确地解析和处理数据,本文将详细介绍如何使用FreeSpire.XLS来获取Excel单元格的... 目录引言环境配置6种常见数据类型C# 读取单元格数据类型引言在处理 Excel 文件时,了解单元格