一、Framework层debug 方法
1.1、Dumpsys工具
Dumpsys 工具是Android系统中自带的一款调试工具,运行在shell环境下,提供系统运行的服务状态信息功能。我们知道Android app 是由activity 和 service 构成的,activity(界面) 主要是负责和用户交互,service(后台服务)主要是处理数据存储、网络请求等后台任务。dumpsys 工具就是用来查看正在运行app 的 service信息的。
dumpsys 输出打印的条件:
(1)、只能打印已经加载到 ServiceManager中的服务;
(2)、如果服务端代码中的 dump 函数没有被实现,则没有信息输出。
1.2、常用的命令
1.2.1、输出所有服务的信息
dumpsys -l

1.2.2、输出指定服务的信息
dumpsys [servicename]

1.2.3、输出指定的服务和进程的信息
dumpsys [servicename][应用名]
二、Hal 层debug 方法
2.1、Logcat 工具
Logcat 工具是Android日志系统提供记录和查看系统调试信息的功能。日志是从各种软件和一些系统的缓冲区中记录下来。
2.2、常用命令使用
2.2.1、只输出error/warning标签的日志
adb logcat *:E
adb logcat *:W
2.2.2、只输出特定标签的日志
adb logcat -s XXX
2.2.3、只输出特定标签和优先级的日志
adb logcat XXX:I *:S //输出优先级为Info, 标签为XXX 的日志
adb logcat XXX:D *:S //输出优先级为Debug,标签为XXX的日志
2.3、Procrank 工具
Android自带的一款调试工具,运行在设备测得shell环境,用来输出进程的内存快照,便于观察进程的内存占用情况。
包括的内存信息:
- VSS:Virtual Set Size 虚拟耗用内存大小(包含共享库占用的内存)
- RSS:Resident Set Size 实际使用物理内存大小(包含共享库占用的内存)
- PSS:Proportional Set Size 实际使用的物理内存大小(比例分配共享库占用的内存)
- USS:Unique Set Size 进程独自占用的物理内存大小(不包含共享库占用的内存)
- 注意:
- USS 大小代表只属于本进程正在使用的内存大小,进程被杀死后会被完整回收;
- VSS/RSS 包含了共享库使用的内存,对查看单一进程内存状态没有参考价值;
- PSS 是按照比例将共享内存分割后,某单一进程对共享内存区的占用情况
2.3.1 常用的命令
命令格式:
procrank [-w] [-v | -r | -p | -u | -h] 表示以上的首字母
2.3.2、查看指定进程的内存占用状态
procrank | grep [pid | process name]
2.3.3、跟踪进程内存状态
通过adb 工具连接手机,执行.sh脚本,进而跟踪内存的占用状态,分析进程是否存在泄露场景
#!/bin/bash
while true;do
adb root && adb shell procrank |grep "com.android.systemui"
sleep 1
done
四、Kernel 层debug 方法
4.1 Dmesg 工具
dmesg是Linux系统中用于查看和管理内核环形缓冲区消息的核心工具,其功能覆盖系统启动诊断、硬件检测、驱动调试等多个关键领域。
dmesg通过访问
/proc/kmsg接口获取内核环形缓冲区中的日志数据。该缓冲区默认存储容量为16392字节(可通过内核参数dmesg -s调整),以循环队列形式保存最新生成的内核级事件记录,包括:
- 系统启动阶段的硬件初始化日志
- 设备驱动程序加载状态
- 内存管理异常报告
- 文件系统挂载错误信息
4.2 常用的命令
4.2.1、过滤特定的内核信息
adb shell "dmesg |grep xxx"
4.2.2、动态过滤特定的信息
adb shell "dmesg -w xxx"


1万+

被折叠的 条评论
为什么被折叠?



