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

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 中分析根本原因。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript基础

JavaScript是一种轻量级、解释型的Web开发语言&#xff0c;获得了所有浏览器的支持&#xff0c;是目前广泛使用的编程语言之一。本章将简要介绍JavaScript基本语法和用法。 1、编写JavaScript脚本 在HTML页面中嵌入JavaScript脚本需要使用<script>标签&#xff0c;在&l…

跟着Nature Communications学作图:纹理柱状图+添加显著性标签!

&#x1f4cb;文章目录 复现图片设置工作路径和加载相关R包读取数据集数据可视化计算均值和标准差 计算均值和标准差方差分析组间t-test 图a可视化过程图b可视化过程合并图ab 跟着「Nature Communications」学作图&#xff0c;今天主要通过复刻NC文章中的一张主图来巩固先前分享…

MySQL数据库入门到精通——运维篇(1)

MySQL数据库入门到精通——运维篇&#xff08;1&#xff09; 1. 日志1.1 错误日志1.2 二进制日志1.3 查询日志1.4 慢查询日志 2. 主从复制2.1 主从复制的概述2.2 主从复制的原理2.3 主从复制的搭建2.3.1 服务器准备2.3.2 主库配置2.3.3 从库配置2.3.4 测试 1. 日志 在任何一种…

力扣:147. 对链表进行插入排序(Python3)

题目&#xff1a; 给定单个链表的头 head &#xff0c;使用 插入排序 对链表进行排序&#xff0c;并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的&#xff0c;每次只移动一个元素&#xff0c;直到所有元素可以形成一个有序的输出列表。每次迭代中&#xff0c…

C++归并排序算法的应用:计算右侧小于当前元素的个数

题目 给你一个整数数组 nums &#xff0c;按要求返回一个新数组 counts 。数组 counts 有该性质&#xff1a; counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例 1&#xff1a; 输入&#xff1a;nums [5,2,6,1] 输出&#xff1a;[2,1,1,0] 解释&#xff1a; 5 …

Latex排版SIGGRAPH总结(持续总结中...)

本文学习总结自&#xff1a;How to use the ACM SIGGRAPH / TOG LaTeX template 相关文件&#xff1a;百度网盘 首先解压 “my paper” 中的文件&#xff0c;并用Latex打开mypaper.tex. 多行连等公式 \begin{equation}表示编号公式&#xff0c;\[ \]表示无编号公式 无编号\b…

折纸达珠峰高度(forwhile循环)

对折0.1mm厚度的纸张多少次&#xff0c;高度可达珠峰高度8848180mm。 (本笔记适合熟悉循环和列表的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅…

数据库面试题整理

目录 MySQL事务隔离级别有哪几种&#xff1f;MySQL的常用的存储引擎有哪些&#xff1f;特点是什么&#xff0c;分别适合什么场景下使用MySQL有数据缓存吗&#xff1f;原理是怎么样的&#xff1f;InnoDB的缓冲池默认是开启的吗&#xff1f;基本原理是什么&#xff1f;会有脏数据…

【MATLAB第81期】基于MATLAB的LSTM长短期记忆网络预测模型时间滞后解决思路(更新中)

【MATLAB第81期】基于MATLAB的LSTM长短期记忆网络预测模型时间滞后解决思路&#xff08;更新中&#xff09; 在LSTM预测过程中&#xff0c;极易出现时间滞后&#xff0c;类似于下图&#xff0c;与一个以上的样本点结果错位&#xff0c;产生滞后的效果。 在建模过程中&#xf…

7 款用于训练 AI 模型的合成数据工具

什么是合成数据&#xff1f; 合成数据是计算机模拟或算法生成的注释信息&#xff0c;作为真实世界数据的替代品。换句话说&#xff0c;合成数据是在数字世界中创建的&#xff0c;而不是从现实世界中收集或测量的。 合成数据的用例 为机器人开发软件只是合成数据的众多用例之…

el-tabel表格加个多选框

<template><div><el-checkbox v-model"checked" :disabled"checkedDis" change"onAllSelectChange">多选框</el-checkbox>点击多选框&#xff0c;禁用列表复选框<el-table ref"multipleTable" :data"…

高压发生器

直流高压试验装置产品简介 武汉凯迪正大KDZG系列直流高压发生器是按照中国行业标准ZGF24003-90《便携式直流高压发生器通用技术条件》的要求&#xff0c;研究、制造的便携式直流高压发生器&#xff0c;适用于电力部门、厂矿企业动力部门、科研单位、铁路、化工、发电厂等对氧化…

IntelliJ IDEA快捷键sout不生效

1.刚下载完idea编辑器时&#xff0c;可能idea里的快捷键打印不生效。这时你打开settings 2.点击settings–>Live Templates–>找到Java这个选项&#xff0c;点击展开 3.找到sout 4.点击全选&#xff0c;保存退出就可以了 5.最后大功告成&#xff01;

【44.全排列Ⅱ】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:vector<vector<int>> ret;vector<int> path;vector<bool> check;vector<vector<int>> permuteUnique(vector<int>&am…

OSATE总线延迟的源码分析与模型修复——针对 Latency-case-study项目 端到端流延迟分析过程中空指针异常的解决

一、背景 在文章AADL 端到端流延迟分析示例项目 Latency-case-study 简述的 “第八章 进行系统的端到端流延迟分析” 中&#xff0c;遇到了这样的一个问题&#xff1a;对分布式系统的端到端流延迟进行分析时&#xff0c;没有生成流延迟分析报告&#xff0c;并且错误日志提示&am…

Python数据分析(四)-- 操作Excel文件

1 操作Excel文件-多种实现方式 在实际生产中&#xff0c;经常会用到excel来处理数据&#xff0c;虽然excel有强大的公式&#xff0c;但是很多工作也只能半自动化&#xff0c;配合Python使用可以自动化部分日常工作&#xff0c;大大提升工作效率。 openpyxl&#xff1a;只允许读…

初识JavaScript(一)

文章目录 一、JavaScript介绍二、JavaScript简介1.ECMAScript和JavaScript的关系2.ECMAScript的历史3.什么是Javascript&#xff1f;4.JavaScript的作用?5.JavaScript的特点 三、JavaScript基础1.注释语法2.JavaScript的使用 四、JavaScript变量与常量变量关键字var和let的区别…

Android广播BroadcastReceiver

BroadcastReceiver组件 BroadcastReceiver是Android中的一个组件&#xff0c;用于接收和处理系统广播或应用内广播。它可以监听系统事件或应用内自定义的广播&#xff0c;并在接收到广播时执行相应的操作。 广播是一种用于在应用组件之间传递消息的机制。通过发送广播&#x…

RT-DERT:在实时目标检测上,DETRs打败了yolo

文章目录 摘要1、简介2. 相关研究2.1、实时目标检测器2.2、端到端目标检测器2.3、用于目标检测的多尺度特征 3、检测器的端到端速度3.1、 NMS分析3.2、端到端速度基准测试 4、实时DETR4.1、模型概述4.2、高效的混合编码器4.3、IoU-aware查询选择4.4、RT-DETR的缩放 5、实验5.1、…

Microsoft SQL Server 缓冲区错误漏洞(CVE-2018-8273)解决方法

前言&#xff1a; 在一次漏洞扫描中&#xff0c;扫描出紧急漏洞Microsoft SQL Server 缓冲区错误漏洞(CVE-2018-8273) 根据修复建议找补丁。 一、漏洞详情 二、寻找补丁 根据漏洞修复建议去下载补丁 目前厂商已发布升级补丁以修复漏洞&#xff0c;补丁获取链接&#xff1a;h…