Android init常用调试工具


Android开机优化系列文档-CSDN博客

  • Android 14 开机时间优化措施汇总-CSDN博客
  • Android 14 开机时间优化措施-CSDN博客
  • 根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客
  • Android系统上常见的性能优化工具-CSDN博客
  • Android上如何使用perfetto分析systrace-CSDN博客
  • Android系统设置kernel log level的方法-CSDN博客
  • Android14系统应用统一裁剪方案_android 开机 服务 裁剪-CSDN博客
  • Android系统上Bootchart的使用_android bootchart-CSDN博客
  • Android init.rc如何并行执行任务-CSDN博客
  • Android init常用调试工具-CSDN博客
  • 如何识别Android init 中的缓慢操作-CSDN博客
  • Android init 中的wait_for_property指令-CSDN博客
  • Android init.rc各阶段的定义和功能-CSDN博客
  • Android init.rc的启动流程-CSDN博客

Android init常用调试工具

在 Android 开发中,调试 init 进程的性能问题和配置问题是提高系统启动效率和可靠性的关键任务。init 是 Android 系统中的第一个用户空间进程,负责启动系统服务、设置系统属性和处理启动任务。以下是 init 进程调试工具的详细介绍,包括工具的使用方法、命令示例和应用场景。

1. logcat

logcat 是 Android 系统中最常用的日志工具,可以用来查看 init 进程的输出日志,帮助识别启动过程中出现的问题。

使用方法
adb logcat | grep init

常见选项

  • -s:设置过滤器。

    adb logcat -s init:D
  • -d:将日志输出到控制台。

    adb logcat -d
  • -v:设置日志输出格式。

    adb logcat -v time

示例

查看 init 进程启动的日志信息:

adb logcat | grep "init"

2. dumpsys

dumpsys 是一个系统诊断工具,用于获取系统服务的状态信息,包括 init 进程的状态。

使用方法
adb shell dumpsys init
常见选项
  • -l:列出所有服务的状态。

    adb shell dumpsys init -l
  • -p:显示 init 进程的详细状态信息。

    adb shell dumpsys init -p
示例

获取 init 进程的服务状态:

adb shell dumpsys init

3. strace

strace 是一个系统调用追踪工具,可以帮助跟踪 init 进程的系统调用,识别性能瓶颈和调试问题。

使用方法
adb shell strace -p <init_pid> -tt
常见选项
  • -p:指定进程 ID。

    adb shell strace -p <init_pid>
  • -tt:显示时间戳。

    adb shell strace -tt -p <init_pid>
  • -e:指定要追踪的系统调用。

    adb shell strace -e trace=open,read,write -p <init_pid>
示例

查看 init 进程的系统调用:

adb shell strace -p 1 -tt

4. perf

perf 是一个性能分析工具,用于分析 init 进程的 CPU 使用情况和性能瓶颈。

使用方法
adb shell perf record -p <init_pid> -a
adb shell perf report
常见选项
  • record:记录性能数据。

    adb shell perf record -p <init_pid> -a
  • report:生成报告。

    adb shell perf report
  • top:实时性能监控。

    adb shell perf top
示例

记录并分析 init 进程的性能:

adb shell perf record -p 1 -a
adb shell perf report

5. trace

trace 是一个命令行工具,用于收集跟踪数据,查看系统和应用的事件。

使用方法
adb shell trace --start -c -p <init_pid>
# 执行需要跟踪的操作
adb shell trace --stop
常见选项
  • --start:开始跟踪。

    adb shell trace --start -c -p <init_pid>
  • --stop:停止跟踪。

    adb shell trace --stop
  • -c:收集 CPU 使用信息。

    adb shell trace --start -c -p <init_pid>
示例

开始跟踪 init 进程的活动:

adb shell trace --start -c -p 1
# Perform some operations
adb shell trace --stop

6. systrace

systrace 是一个更高级的性能分析工具,提供详细的系统级别的性能数据。

使用方法
adb shell atrace -b 4096 -t 10 -c -a init
常见选项
  • -b:设置缓冲区大小。

    adb shell atrace -b 4096
  • -t:指定跟踪时间。

    adb shell atrace -t 10
  • -a:指定要跟踪的进程。

    adb shell atrace -a init
  • -c:清除之前的跟踪数据。

    adb shell atrace -c
示例

init 进程进行系统级跟踪:

adb shell atrace -b 4096 -t 10 -c -a init

7. top 命令

top 命令可以动态地显示系统中进程的 CPU 和内存使用情况。

使用方法
adb shell top -d 1
常见选项
  • -d:设置刷新间隔。

    adb shell top -d 1
  • -p:只显示指定进程的信息。

    adb shell top -p <init_pid>
示例

实时查看 init 进程的资源使用情况:

adb shell top -d 1 -p 1

8. debugfs

debugfs 是一个高级文件系统调试工具,可以查看和修改文件系统的内容。虽然它主要用于文件系统层的调试,但有时可以帮助诊断 init 进程的文件系统相关问题。

使用方法
adb shell debugfs -R "ls" /dev/block/bootdevice/by-name/system
常见命令
  • -R:执行命令。

    adb shell debugfs -R "ls" /dev/block/bootdevice/by-name/system
示例

查看 system 分区中的文件:

adb shell debugfs -R "ls" /dev/block/bootdevice/by-name/system

9. dumpstate

dumpstate 是一个用于收集设备状态的工具,可以帮助诊断系统问题。

使用方法
adb shell dumpstate > dumpstate.txt
常见选项
  • -d:收集调试信息。

    adb shell dumpstate -d
  • -m:指定要收集的模块。

    adb shell dumpstate -m init
示例

收集 init 相关的系统状态信息:

adb shell dumpstate -m init > dumpstate_init.txt

10. ps 命令

ps 命令用于查看当前进程的状态。

使用方法
adb shell ps | grep init
常见选项
  • -A:显示所有进程。

    adb shell ps -p 1
  • -p:显示指定进程的信息。

    adb shell ps -p 1
示例

查看 init 进程的信息:

adb shell ps | grep init

11. busybox

busybox 提供了许多命令的简化版本,可以用来执行一些基本的调试任务。

使用方法
adb shell busybox
常见命令
  • ls:列出目录内容。

    adb shell busybox ls /system
  • cat:显示文件内容。

    adb shell busybox cat /system/etc/init.rc
示例

列出 /system 目录中的文件:

adb shell busybox ls /system

12. 示例调试步骤

以下是一个调试 init 进程缓慢操作的实际示例步骤:

1. 查看日志
adb logcat | grep init

2. 获取 init进程状态:
adb shell dumpsys init
3. 跟踪 init进程的系统调用:
adb shell strace -p 1 -tt
4. 记录 init进程的性能数据:
adb shell perf record -p 1 -a
adb shell perf report
5. 对 init进程进行系统级跟踪:
adb shell atrace -b 4096 -t 10 -c -a init
6. 实时监控 init进程的资源使用情况:
adb shell top -d 1 -p 1
7. 收集设备状态信息
adb shell dumpstate -m init > dumpstate_init.txt
8. 查看 system分区中的文件:
adb shell debugfs -R "ls" /dev/block/bootdevice/by-name/system

参考文献

  • Android logcat 工具文档

  • Android dumpsys 工具文档

  • Android strace 工具文档

  • Android perf 工具文档

  • Android trace 工具文档

  • Android systrace 工具文档

  • Android top 命令参考

  • Android debugfs 工具文档

  • Android dumpstate 工具文档

  • Android busybox 工具文档

参考链接

  • Android init 源代码文档

  • Android init.rc 配置文件

  • Android 性能分析工具

通过这些工具和方法,可以有效地调试 init 进程中的性能问题,识别缓慢操作的根本原因,并进行相应的优化。

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

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

相关文章

UE TSharedPtr

文章目录 概述TSharedPtrTSharedPtr包含2部分 构造&#xff0c;析构&#xff0c;拷贝构造&#xff0c;移动构造构造拷贝构造移动构造 小结 概述 之前写过一篇c的智能指针的&#xff0c;这篇写下ue的。本质上来说是差不多的&#xff0c;可以简单看看。 TSharedPtr 如下图&…

基于SpringBoot+Vue的篮球竞赛预约平台(带1w+文档)

基于SpringBootVue的篮球竞赛预约平台(带1w文档) 基于SpringBootVue的篮球竞赛预约平台(带1w文档) 本系统提供给管理员对首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;项目分类管理&#xff0c;竞赛项目管理&#xff0c;赛事预约管理&#xff0c;系统管理等诸多功…

2-40 基于Matlab编写的3维FDTD(时域有限差分算法)计算了球的RCS经典散射问题

基于Matlab编写的3维FDTD(时域有限差分算法)计算了球的RCS经典散射问题&#xff0c;采用PEC作边界&#xff0c;高斯波束激励。程序已调通&#xff0c;可直接运行。 2-40 3维FDTD 时域有限差分算法 - 小红书 (xiaohongshu.com)

Meta Quest3 激活更新不动的问题

1. Meta Quest3激活过程中遇到更新不动的情况&#xff0c;如下图所示&#xff1a; 2. 关机 3. 开机检查连接的wifi&#xff0c;是否存在受限的情况&#xff0c;如果存在受限情况&#xff0c;则说明当前的mofa只支持TCP&#xff0c;需要设置支持UDP模式。 具体操作是设置魔法…

细节决定成败:电商详情页全攻略

电子商务产品细节页面作为电子商务信息的主要承载页面&#xff0c;也是电子商务业务转型的主要战场。因此&#xff0c;商业详细页面的设计和规划是电子商务产品设计的核心&#xff0c;承担着转化率&#xff0c;甚至是产品设计的KPI。 电子商务作为传统商品交易在互联网领域的表…

探究比表面积测试的方法、仪器与原理-测试狗

探究比表面积测试的方法、仪器与原理 比表面积是指单位质量物质所具有的表面积&#xff0c;它是衡量物质性能的重要参数之一。比表面积测试在材料科学、环境保护、化工等领域具有广泛的应用。比表面积测试方法多样&#xff0c;仪器各异&#xff0c;下面测试狗就为大家介绍一些比…

Windows版MySQL5.7解压直用(如何卸载更换位置重新安装)

文章目录 停止mysql进程及服务迁移整个mysql文件夹删除data重启计算机重新安装 停止mysql进程及服务 net stop mysql mysqld -remove mysql迁移整个mysql文件夹 删除data 重启计算机 shutdown -r -t 0重新安装 https://blog.csdn.net/xzzteach/article/details/137723185

Linux_线程的同步与互斥

目录 1、互斥相关概念 2、代码体现互斥重要性 3、互斥锁 3.1 初始化锁 3.2 申请、释放锁 3.3 加锁的思想 3.4 实现加锁 3.5 锁的原子性 4、线程安全 4.1 可重入函数 4.2 死锁 5、线程同步 5.1 条件变量初始化 5.2 条件变量等待队列 5.3 唤醒等待队列…

视觉网络的有效调制

摘要 链接&#xff1a;https://arxiv.org/pdf/2403.19963 在这项工作中&#xff0c;我们提出了高效调制&#xff08;EfficientMod&#xff09;&#xff0c;这是一种用于高效视觉网络的新型设计。我们重新审视了调制机制&#xff0c;该机制通过卷积上下文建模和特征投影层处理输…

Java并发(三)Java并发核心机制

J.U.C 简介 Java 的 java.util.concurrent 包&#xff08;简称 J.U.C&#xff09;中提供了大量并发工具类&#xff0c;是 Java 并发能力的主要体现&#xff08;注意&#xff0c;不是全部&#xff0c;有部分并发能力的支持在其他包中&#xff09;。从功能上&#xff0c;大致可以…

【已解决】服务器无法联网与更换镜像源

目录 问题描述&#xff1a; 1.修改网卡的 DNS1 和 DNS2 2.修改DNS列表 3.重启网络服务 4.切换镜像源 4.1备份原镜像源 4.2下载阿里云镜像源 4.3替换无法使用的域名 4.4刷新软件包缓存 4.5其他镜像源 5.阿里云镜像源开发者社区说明 6.阿里云DNS网址 7.DNS域名服务器…

Spring Boot 日志 (初级)

什么是日志呢&#xff1f;其实就是一条条的打印语句&#xff0c;我们就可以根据打印出来的日志&#xff0c;去分析程序存在的问题等。虽然作为后端开发人员&#xff0c;日志并不是那么重要&#xff0c;但是在学习的过程中&#xff0c;也是比较重要的&#xff0c;可以使用在我们…

[Spring] Spring配置文件

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

主流大数据调度工具DolphinScheduler之数据采集

今天继续给大家分享主流大数据调度工具DolphinScheduler&#xff0c;以及数据的ETL流程。 一&#xff1a;调度工具DS 主流大数据调度工具DolphinScheduler&#xff0c; 其定位&#xff1a;解决数据处理流程中错综复杂的依赖关系 任务支持类型&#xff1a;支持传统的shell任…

数据结构之字符串的最长公共子序列问题详解与示例(C,C++)

文章目录 1、最长公共子序列定义2、动态规划解法3、状态转移方程初始化构建最长公共子序列 4、C 和 C 实现示例C 语言实现C 语言实现 5、总结 字符串的最长公共子序列&#xff08;Longest Common Subsequence, LCS&#xff09;是计算机科学中的一个经典问题&#xff0c;属于动态…

接口开发:Orcal数据库的批量新增sql

场景&#xff1a;在日常的CURD中一定会用到批量新增。在我们的项目中&#xff0c;使用的数据库是Orcal&#xff0c;由于之前基本都是使用Mysql的&#xff0c;使用的sql语句也基本都是用mysql的。但是在这次的接口编写时用mysql的批量新增出了问题&#xff0c;刚开始我还以为是写…

[MySQL]02 存储引擎与索引,锁机制,SQL优化

Mysql存储引擎 可插拔式存储引擎 索引是在存储引擎底层上实现的 inno DB MySQL默认存储引擎: inno DB高可靠性和高性能的存储引擎 DML操作遵循ACID模型支持事务行级锁,提高并发访问性能支持外键 约束,保证数据完整性和可靠性 MySAM MySAM是MySQL的早期引擎 特点: 不支持事…

OmniFocus4 归档和备份

归档和备份 当您的数据库变得臃肿、缓慢或者充斥着过时内容时&#xff0c;或者您需要回到之前的数据版本时&#xff0c;OmniFocus for Mac 的归档和备份功能可以帮您实现心愿。 创建归档 每天使用 OmniFocus 后不久&#xff0c;数据库可能会变得很大&#xff0c;在与移动设备…

安装 VMware vSphere vCenter 8.0

安装 VMware vSphere vCenter 8.0 1、运行安装程序 2、语言选择中文 3、点下一步 4、接受许可协议&#xff0c;点下一步 5、填写部署vCenter服务的ESXI主机IP地址以及对应ESXI主机的账号密码&#xff0c;这里将vCenter服务部署在192.168.1.14这台ESXi主机上 6、接受证书警告 7…

自动化测试中如何应对网页弹窗的挑战!

在自动化测试中&#xff0c;网页弹窗的出现常常成为测试流程中的一个难点。无论是警告框、确认框、提示框&#xff0c;还是更复杂的模态对话框&#xff0c;都可能中断测试脚本的正常执行&#xff0c;导致测试结果的不确定性。本文将探讨几种有效的方法来应对网页弹窗的挑战&…