如何快速定位Android端GPU问题之工具介绍

简介: ## GAPID ```GAPID```是```Google```下的一个开源库,可用于记录发送给GPU的API调用及渲染状态检查,目前主要用于Android端,对OpenGL ES及Vulkan的支持最完善,使用此工具可以协助定位排查端上OpenGL ES的渲染效果、渲染状态及错误、渲染绑定的shader等资源,同时可以即时修改渲染每步中的变量值并查看新的渲染效果。 ## 下载安装

GAPID

GAPIDGoogle下的一个开源库,可用于记录发送给GPU的API调用及渲染状态检查,目前主要用于Android端,对OpenGL ES及Vulkan的支持最完善,使用此工具可以协助定位排查端上OpenGL ES的渲染效果、渲染状态及错误、渲染绑定的shader等资源,同时可以即时修改渲染每步中的变量值并查看新的渲染效果。

下载安装

下载地址:https://github.com/google/gapid/releases
当前最新的稳定版本是1.6.1,也可以下载开发版1.7.0,注意开发版本更新比较频繁,也可能会出现运行过程中崩溃问题,建议使用稳定版本。下载后默认安装即可。

环境配置

启动界面如下图
image.png

选择Capture a new trace,如下图我的机器上的默认设置
image.png

注意:如果第一行Device无法显示,可以点击右侧图标刷新,如果刷新后还不能显示,需要手动安装。

如我的安装路径在/Applications/GAPID.app/Contents/MacOS

  ~ cd /Applications/GAPID.app/Contents/MacOS
  MacOS ll
total 438240
-rwxr-xr-x@ 1 xunshan  admin   197B  7 26 18:28 build.properties
-rwxr-xr-x  1 xunshan  admin   2.0M  7 26 18:44 device-info
-rwxr-xr-x  1 xunshan  admin   1.8M  7 26 18:44 gapid
-rwxr-xr-x@ 1 xunshan  admin   5.0M  7 26 18:28 gapid-arm64-v8a.apk
-rwxr-xr-x@ 1 xunshan  admin   4.1M  7 26 18:28 gapid-armeabi-v7a.apk
-rwxr-xr-x@ 1 xunshan  admin   5.7M  7 26 18:28 gapid-x86.apk
-rwxr-xr-x  1 xunshan  admin   4.7M  7 26 18:44 gapir
-rwxr-xr-x  1 xunshan  admin   174M  7 26 18:44 gapis
-rwxr-xr-x  1 xunshan  admin    17M  7 26 18:44 gapit
drwxr-xr-x  9 xunshan  admin   288B  7 26 18:28 jre
drwxr-xr-x  7 xunshan  admin   224B  7 26 18:44 lib
drwxr-xr-x  3 xunshan  admin    96B  7 26 18:28 strings

如果你的app为32位,则安装gapid-armeabi-v7a.apk,否则64位安装gapid-arm64-v8a.apk,安装成功后再进入gapid界面更新选择设备。

设置完成后点击OK,此时手机会开始安装选择调试的app,如下图
image.png

注意:启动gapid时,需要将android studio退出,否则gapid无法正常启动app。

app安装调试信息成功后会自动启动运行,此时gapid如下图
image.png

此时可以操作app,当你需要抓取gpu操作时,则点击start

抓取完成后,界面会显示抓取的内存容量,点击Open Trace开始分析。
image.png

然后gapid会打开抓取的内容,如果有多个context,可以进行切换查看不同上下文抓取到的内容。
image.png

下排左侧Commands表示抓到的图像并draw calls,中间可以预览图像,右侧则可以查看相应api的参数、内存值及shader等gpu资源的具体信息。

后续会举一些实际工作中遇到的例子,如渲染效果异常、性能分析、显存泄漏等gpu相关问题讲解具体如何使用gapid工具分析抓取到的内容以定位问题的原因并解决。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
6月前
|
Android开发 芯片 开发者
Android MediaTek bootloader 的序列号长度 & 移除非字母和数字限制 SN-Writer工具支持写入
Android MediaTek bootloader 的序列号长度 & 移除非字母和数字限制 SN-Writer工具支持写入
92 0
|
2月前
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
160 4
Android性能测试——发现和定位内存泄露和卡顿
|
3月前
|
编解码 Android开发
【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手
本文介绍了Android Studio中使用ConstraintLayout布局的方法,通过创建布局文件、设置控件约束等步骤,快速上手UI设计,并提供了一个TV Launcher界面布局的绘制示例。
54 1
|
4月前
|
Java Android开发 iOS开发
探索安卓与iOS开发的差异性:平台、工具和用户体验的对比分析
【7月更文挑战第30天】在移动应用开发的广阔天地中,安卓和iOS两大平台各自占据着不可忽视的地位。本文将深入探讨这两大平台在开发环境、工具选择以及最终用户体验上的根本差异,并分析这些差异如何影响开发者的策略和用户的偏好。通过比较安卓的开放性与iOS的封闭性,我们将揭示不同平台下的开发哲学及其对生态系统的影响。
44 4
|
4月前
|
开发工具 Android开发 数据安全/隐私保护
探索iOS与安卓应用开发的异同:技术、工具和市场趋势
在移动操作系统的广阔舞台上,iOS和安卓两大主角各自演绎着怎样的精彩?本文将深入剖析这两大平台在应用开发过程中的技术差异、开发工具的选择以及面对的市场环境。通过数据支撑和案例分析,我们将一窥这两个系统如何影响开发者的决策,并探讨它们未来的发展方向。
|
3月前
|
API 调度 Android开发
Android经典实战之处理后台任务的2个工具
本文介绍Android后台任务管理,涵盖WorkManager与JobScheduler的使用方法及区别。WorkManager属Jetpack库,确保任务可靠执行,支持延迟与条件依赖。JobScheduler则针对特定条件下的任务调度,如网络类型。两者各有优势,WorkManager适用于多数场景。
44 0
|
4月前
|
监控 开发工具 Android开发
探索安卓与iOS开发的差异:平台特性、工具和市场趋势
在移动应用开发的广阔舞台上,安卓与iOS两大操作系统扮演着主角。它们各自拥有独特的平台特性、开发工具和市场定位,这些差异深刻影响着开发者的决策和产品的最终形态。本文将深入分析这两大平台的关键技术差异,探讨各自的开发环境和工具集,以及它们在市场上的表现和未来的趋势,为开发者提供一个全面的视角,帮助他们在这两个平台上做出更明智的开发选择。
|
5月前
|
监控 Android开发 iOS开发
探索Android与iOS开发的差异:平台、工具和用户体验的比较
【6月更文挑战第25天】在移动应用开发的广阔天地中,Android和iOS两大平台各领风骚,它们在开发环境、工具选择及用户体验设计上展现出独特的风貌。本文将深入探讨这两个操作系统在技术实现、市场定位和用户交互方面的关键差异,旨在为开发者提供一个全景式的视图,帮助他们在面对项目决策时能够更加明智地选择适合自己项目需求的平台。
|
5月前
|
开发工具 Android开发 iOS开发
探索安卓与iOS开发的差异:从工具到用户体验
【6月更文挑战第20天】在移动应用开发的广阔天地中,安卓和iOS两大平台各自占据半壁江山。本文将深入探讨这两个操作系统在开发环境、编程语言、用户界面设计以及性能优化等方面的关键差异。我们将通过比较分析,揭示各自平台的独特优势和面临的挑战,为开发者提供决策参考,并为最终用户提供更深层次的用户体验洞察。
|
6月前
|
Java Android开发
Android 反编译工具的使用
Android 反编译工具的使用
82 0