atrace
是 Android 系统中一个非常有用的工具,广泛用于性能分析和调试。它通过记录和分析系统的各种事件来帮助开发者找出应用或系统性能瓶颈,尤其是在处理多任务或多线程的情况时,能提供非常详细的调试信息。
1. 基本用法
atrace
允许你通过命令行收集系统和应用的跟踪数据,并生成性能分析报告。
atrace [options] [categories...]
2. 常见参数及其解释
-b <size>
:设置缓冲区大小
-b
用来设置缓冲区的大小,以字节为单位。如果跟踪的数据量很大,可以增加缓冲区的大小。
atrace -b 1024k gfx view
这会将缓冲区大小设置为 1024KB。
-c
:清除已有的跟踪文件
-c
参数用来在启动跟踪时清除之前的跟踪文件。一般用于启动新的跟踪会话。
atrace -c gfx view
会清除先前的跟踪文件并开始新的跟踪。
-t <time>
:设置跟踪时间
-t
参数用于指定跟踪的持续时间(以秒为单位)。跟踪在时间到达后会自动停止。默认情况下,atrace
会无限期运行,直到手动停止。
atrace -t 10 gfx view
这会记录 10 秒钟的 gfx
和 view
类别的性能数据。
-z
:将输出压缩为 .gz
格式
使用 -z
参数时,atrace
会将输出数据压缩成 .gz
格式。这样可以节省存储空间,尤其是在跟踪数据量较大的时候。
atrace -z gfx view
这会将数据压缩成 .gz
格式并保存。
-h
:显示帮助信息
-h
参数用于查看 atrace
的帮助信息,列出所有可用选项。
atrace -h
这将显示 atrace
工具的帮助信息。
-f <file>
:将跟踪数据输出到指定文件
-f
参数用来将跟踪输出保存到指定的文件中。默认情况下,atrace
会将输出打印到标准输出。
atrace -f /data/trace.txt gfx view
这会将输出保存到 /data/trace.txt
文件中。
-p <pid>
:跟踪指定进程
-p
参数允许你仅跟踪特定的进程,通过进程 ID(PID)指定进程。
atrace -p 1234 gfx view
这将跟踪 PID 为 1234
的进程的 gfx
和 view
类别的事件。
3. 事件类别(Categories)
atrace
支持多种事件类别,可以根据需要选择相应的类别进行跟踪。常见的类别包括:
gfx
:图形渲染相关的事件,主要用于分析 GPU 渲染性能。view
:与视图布局、窗口、触摸事件等相关的性能数据。input
:与用户输入(如触摸、按键等)相关的事件。hal
:硬件抽象层相关事件,通常与底层硬件的操作有关。app
:应用层相关的事件。sched
:与系统调度相关的事件,用于分析 CPU 调度情况。freq
:与 CPU 频率调整相关的事件,帮助分析 CPU 频率的波动。camera
:与相机操作相关的事件。dalvik
:与 Dalvik 虚拟机或 ART 相关的事件,通常用于分析 Java 或 Kotlin 代码的执行情况。binder
:与 Binder 驱动交互相关的事件,用于调试进程间通信(IPC)。irq
:与中断请求(IRQ)处理相关的事件。
你可以通过指定一个或多个类别来跟踪相关事件,例如:
atrace gfx view input
这会同时跟踪 gfx
、view
和 input
类别的事件。
4. 示例命令
-
记录 10 秒钟的
gfx
和view
数据并保存为文件:atrace -t 10 -f /data/trace.txt gfx view
-
跟踪 PID 为 1234 的进程的
gfx
和input
类别数据,持续 5 秒:atrace -t 5 -p 1234 gfx input
-
使用较大的缓冲区并压缩输出数据:
atrace -b 1024k -z gfx view
-
仅查看帮助信息:
atrace -h
5. 分析 atrace
输出
生成的跟踪数据通常以 atrace
日志文件的形式存储。你可以将它们导入到 Systrace
工具或使用 chrome://tracing
查看和分析。
5.1. 使用 Systrace 或 Chrome 浏览器分析
- 在开发者工具中使用
chrome://tracing
进行可视化查看和分析。 - 你可以使用
atrace
收集的数据生成 HTML 格式的报告,方便查看性能瓶颈、线程阻塞、GPU 使用情况等信息。
6. 总结
atrace
是 Android 平台上非常有用的性能分析工具,通过灵活的命令行参数,可以帮助开发者深入分析应用的性能问题。了解其常用的参数(如 -t
、-f
、-p
等)以及如何选择不同的事件类别,是高效使用 atrace
进行调试的关键。