当前位置: 首页 > news >正文

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常用调试工具

在 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 进程中的性能问题,识别缓慢操作的根本原因,并进行相应的优化。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ubuntu 20.04 系统 同一宿主机,不同ros2 docker 不通信问题
  • EPLAN 去掉PDF中的红色跳转标识
  • 【学习笔记】无人机(UAV)在3GPP系统中的增强支持(六)-人工智能控制的自主无人机用例
  • C++代码_让室友坑我
  • 搞定前端面试题——ES6同步与异步机制、async/await的使用以及Promise的使用!!!
  • 网络故障处理及分析工具:Wireshark和Tcpdump集成
  • golang单元测试性能测试常见用法
  • 【Linux 配置静态IP】Ubuntu20.04
  • MySQL双主双从实现方式
  • 音视频开发入门教程(2)配置FFmpeg编译 ~共210节
  • Scala学习笔记16: 注解
  • ‍我想我大抵是疯了,我喜欢上了写单元测试
  • 根据视图矩阵, 恢复相机的世界空间的位置
  • Elasticsearch 企业级实战 01:Painless 脚本如何调试?
  • OPPO 2024届校招正式批笔试题-后端(C卷)
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Codepen 每日精选(2018-3-25)
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java 多线程编程之:notify 和 wait 用法
  • Java超时控制的实现
  • JS 面试题总结
  • React的组件模式
  • 半理解系列--Promise的进化史
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 从setTimeout-setInterval看JS线程
  • 我是如何设计 Upload 上传组件的
  • 异步
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 整理一些计算机基础知识!
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • # Redis 入门到精通(一)数据类型(4)
  • # SpringBoot 如何让指定的Bean先加载
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #162 (Div. 2)
  • #每天一道面试题# 什么是MySQL的回表查询
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (面试必看!)锁策略
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转) 深度模型优化性能 调参
  • (自适应手机端)行业协会机构网站模板
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .net和jar包windows服务部署
  • .net连接MySQL的方法
  • .net生成的类,跨工程调用显示注释
  • .NET中两种OCR方式对比
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @Service注解让spring找到你的Service bean