Android NDK开发详解之调试和性能分析的系统跟踪概览

news2024/11/28 17:42:50

Android NDK开发详解之调试和性能分析的系统跟踪概览

    • 系统跟踪指南

“系统跟踪”就是记录短时间内的设备活动。系统跟踪会生成跟踪文件,该文件可用于生成系统报告。此报告有助于您了解如何最有效地提升应用或游戏的性能。

有关进行跟踪和性能分析的全面介绍,请参阅 Perfetto 文档中的跟踪 101 页面。

Android 平台提供了多种不同的跟踪记录获取途径:

Android Studio CPU 和内存分析器
系统跟踪实用程序
Perfetto 命令行工具(Android 10 及更高版本)
Systrace 命令行工具
在您与应用互动时,Android Studio CPU 性能分析器可实时检查应用的 CPU 使用情况和线程活动。您还可以检查方法跟踪记录、函数跟踪记录和系统跟踪记录中的详细信息。内存分析器可让您大致了解与触摸事件、activity 更改和垃圾回收事件相关的内存用量。

系统跟踪实用程序是一款 Android 工具,用于将设备活动保存到跟踪文件中。在搭载 Android 10(API 级别 29)或更高版本的设备上,跟踪文件会以 Perfetto 格式保存,如本文档后面部分所示。在搭载较低版本 Android 系统的设备上,跟踪文件会以 Systrace 格式保存。

Perfetto 是 Android 10 中引入的平台级跟踪工具。这是适用于 Android、Linux 和 Chrome 的成熟开源跟踪项目。与 Systrace 不同,它提供数据源超集,可让您以协议缓冲区二进制流形式记录任意长度的跟踪记录。您可以在 Perfetto 界面中打开这些跟踪记录。

Systrace 是平台提供的旧版命令行工具,可记录短时间内的设备活动,并保存在压缩的文本文件中。该工具会生成一份报告,其中汇总了 Android 内核中的数据,例如 CPU 调度程序、磁盘活动和应用线程。Systrace 适用于 Android 4.3(API 级别 18)及更高版本的所有平台版本,但建议将 Perfetto 用于运行 Android 10 及更高版本的设备。
在这里插入图片描述

图 1. Perfetto 跟踪记录视图示例,其中显示了与某个应用之间大约 20 秒的互动情况。
在这里插入图片描述
图 2. Systrace HTML 报告示例,其中显示了与某个应用之间时长为 5 秒的交互情况。

这两份报告都提供在给定时间段内,Android 设备的系统进程总体情况。该报告还检查了捕获到的跟踪信息,以突出显示发现的问题(例如界面卡顿或耗电量高)。

Perfetto 和 Systrace 可交互使用:

在 Perfetto 界面中打开 Perfetto 文件和 Systrace 文件。在 Perfetto 界面中使用旧版 Systrace 查看器打开 Systrace 文件(使用 Open with legacy UI 链接)。
使用 traceconv 工具将 Perfetto 跟踪记录转换为旧版 Systrace 文本格式。
注意:Systrace 和 Perfetto 不会收集有关应用进程中代码执行情况的详细信息。如需详细了解您的应用正在执行哪些方法及其占用了多少 CPU 资源,请使用 Android Studio 中的 CPU 性能分析器。

系统跟踪指南

如需详细了解系统跟踪工具,请参阅以下指南:

使用 CPU 性能分析器检查 CPU 活动
展示如何在 Android Studio 中分析应用的 CPU 使用情况和线程活动。
System Tracing 系统应用
介绍如何在任何搭载 Android 9(API 级别 28)或更高版本的设备上直接捕获系统跟踪记录。
Systrace 命令行参考文档
定义可传递到 Systrace 命令行界面的不同选项和标志。
使用 ADB 运行 Perfetto
介绍如何运行 perfetto 命令行工具来捕获跟踪记录。
运行 Perfetto
外部文档,介绍如何构建和运行 perfetto 命令行工具来捕获跟踪记录。
Perfetto 界面
Perfetto 网页版跟踪记录查看器可打开 Perfetto 跟踪记录并显示完整报告。您还可以使用旧版界面选项在此查看器中打开 Systrace 跟踪记录。
浏览 Systrace 报告
列出典型报告的各个元素,提供用于浏览报告的键盘快捷键,并介绍如何识别性能问题的类型。
定义自定义事件
介绍如何对代码的特定部分应用自定义标签,以便更轻松地在 Systrace 或 Perfetto 中分析根本原因。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1160145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Blender中使用python脚本

目录 使用: 快速创建10个圆球: python代码: 形态键快速创建和重命名: 可能存在的问题 python代码: Blender 强大的特点是其对 Python 脚本的完美支持。 这意味着可以编写 Python 脚本来自动化各种任务和操作&am…

密码学 - SHA-2

实验八 SHA-2 1.实验目的 熟悉SHA – 2算法的运行过程,能够使用C语言编写实现SHA-2算法程序,增加对摘要函数的理解。 2、实验任务 (1)理解SHA-2轮函数的定义和常量的定义。 (2)利用VC语言实现SHA-2算…

[ACTF2023]复现

MDH 源题: from hashlib import sha256 from secret import flagr 128 c 96 p 308955606868885551120230861462612873078105583047156930179459717798715109629 Fp GF(p)def gen():a1 random_matrix(Fp, r, c)a2 random_matrix(Fp, r, c)A a1 * a2.Treturn…

【湘粤鄂车牌】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

虹科示波器 | 汽车免拆检修 | 2013款大众途观车发动机加速无力

一、故障现象 一辆2013款大众途观车,搭载CGM发动机,累计行驶里程约为12.6万km。车主进厂反映,发动机加速无力。 二、故障诊断 接车后试车,发动机怠速运转正常;原地将加速踏板踩到底,发动机转速最高只能达到…

做Web自动化前,你必须掌握的几个技能!

学习web自动化的前提条件:手工测试(了解各种测试的知识)、学习编程语言、学习Web基础、学习自动化测试工具 、学习自动化测试框架 、需要掌握前端的一些知识,无论学习语言还是前端知识,都是为了接下来的脚本和框架做铺…

antd5上传图片显示405解决

antd5上传图片,默认使用上传方式会调用本地的接口。 405 Method Not Allowed 状态码 405 Method Not Allowed 表明服务器禁止了使用当前 HTTP 方法的请求。 Upload {...props}beforeUpload{(file) > {//自定义上传图片的逻辑//最后返回falsereturn false }} &…

Python JSON 使用指南:解析和转换数据

JSON 是一种用于存储和交换数据的语法。JSON 是文本,使用 JavaScript 对象表示法编写。 Python 中的 JSON Python 有一个内置的 json 包,可用于处理 JSON 数据。 示例:导入 json 模块: import json解析 JSON - 从 JSON 转换为…

【UE】从UI中拖拽生成物体

目录 效果 步骤 一、准备工作 二、创建UI 三、创建Actor 四、拖拽生成Actor的逻辑 效果 步骤 一、准备工作 1. 首先新建一个第三人称模板工程 2. 新建一个游戏模式基础,这里命名为“BP_UIGameMode” 在世界场景设置中设置游戏模式覆盖为“BP_UIGameMode”…

代码随想录算法训练营第6天|242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

JAVA代码编写 242. 有效的字母异位词 给定两个字符串 *s* 和 *t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。 **注意:**若 *s* 和 *t* 中每个字符出现的次数都相同,则称 *s* 和 *t* 互为字母异位词。 示例 1: 输入: s "a…

pytorch复现4_Resnet

ResNet在《Deep Residual Learning for Image Recognition》论文中提出,是在CVPR 2016发表的一种影响深远的网络模型,由何凯明大神团队提出来,在ImageNet的分类比赛上将网络深度直接提高到了152层,前一年夺冠的VGG只有19层。Image…

为什么需要企业云性能监控?

云计算已经成为企业信息技术的核心组成部分,提供了灵活性、可扩展性和成本效益。然而,随着企业的应用程序和数据迁移到云中,监控和管理云性能变得至关重要。在这篇文章中,我们将探讨企业云性能监控的重要性是什么! 为什么需要企业…

瞄准一款好用到爆的在线数据库设计工具Itbuilder,被惊艳了!

在线数据库设计工具都不陌生,这与日常开发工作息息相关,每天都会用到。一款好用的在线数据库设计工具可以帮我们省去很多事情,Itbuilder在线数据库设计工具简单工作台,有利于新手操作,丰富的功能,可以满足开…

RHCSA -- VMware虚拟机配置及破解密码

一、配置虚拟机 1、开启VMware(自定义) 2、设置虚拟机硬件兼容性(默认) 3、稍后安装虚拟机操作系统 4、选择为Linux的虚拟机 5、虚拟机机名 6、设置虚拟机处理器 7、设置虚拟机所连接的网络类型 8、选择磁盘类型 9、设置所选磁…

【Liunx应用市场】yum

【Liunx应用市场】yum 1. Linux 软件包管理器 yum2. yum源3. yum的使用3.1 yum查找3.2 yum安装3.3 yum删除 所属专栏:Linux学习❤️ 🚀 >博主首页:初阳785❤️ 🚀 >代码托管:chuyang785❤️ 🚀 >感…

【Qt控件之QInputDialog】详解

Qt控件之QInputDialog 概述常用函数枚举成员方法信号 示例使用场景问题:使用QInputDialog是否可以使用正则表达式验证示例 概述 QInputDialog类提供了一个简单方便的对话框,用于从用户获取单个值。 输入值可以是字符串、数字或列表中的项。必须设置一个…

X64指令基本格式

X64指令基本格式 1 REX Prefix结构2 REX prefix扩展位2.1 第一种,无SIB字节的内存寻址(mod !11 )2.2 第二种,寄存器到寄存器的寻址(无内存操作数,mod11)2.3 第三种,带SIB字节的内存寻…

JVM虚拟机:JVM的垃圾回收清除算法(GC)有哪些

垃圾回收清除算法 引用计数法 标记清除 拷贝算法 标记压缩 引用计数法 有一个引用指向对象,那么引用计数就加1,少一个引用指向,那么引用计数就减1,这种方法了解一下就好,JVM机会不会使用这种方法,因为它在每次对象赋值的时候都要维护引用计数器,且计数器本身也有一定的…

智能座舱中的人工智能数据

智能汽车——推动变革与盈利的利刃 对于汽车公司而言,投资于人工智能解决方案从未显得如此关键。据 Tractica 预测,到 2025 年,汽车 AI 硬件、软件和服务的市场规模将从 2017 年的 12 亿美元上升至 265 亿美元。该行业具有巨大的变革潜力&am…

高等数学啃书汇总重难点(十一)曲线积分与曲面积分

依旧是公式极其复杂恶心的一章,建议是:掌握两种线面积分的计算套路即可,和第8章一样属于同济版教材中最不重要的章节,不会对底层理解做过多考察~ 1.弧长曲线积分的几何意义 2.弧长曲线积分的定义和性质 3.弧长曲线积分的计算方式 …