Android性能调试工具:Systrace(一)命令行工具的安装

本文介绍了Android的Systrace工具,用于记录设备活动并生成详细报告。Systrace是一个Python脚本,适用于Android 10及以下版本。文章详细阐述了如何搭建运行Systrace的环境,包括配置Python 2.7环境,添加环境变量,安装SDK工具,以及设置第三方依赖库。此外,还提供了在线和离线抓取Systrace HTML报告的命令行用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Systrace 是平台提供的旧版命令行工具(Android 10以上用的都是Perfetto工具),可记录短时间内的设备活动,并保存在压缩的文本文件中。

Systrace 工具会生成一份报告,其中汇总了 Android 内核中的数据,例如 CPU 调度程序、磁盘活动和应用线程。

Systrace 命令会调用Systrace工具,您可以借助该工具收集和检查设备上在系统一级运行的所有进程的时间信息。

Systrace工具本质是一个.py脚本:

(1)Android源码:/external/chromium-trace/systrace.py   (find ./ -name "systrace.py")

(2)AndroidStudio Sdk目录:Sdk/platform-tools/systrace/systrace.py(习惯从此获取)

 

如何搭建运行Systrace 命令的环境?

配置python环境

python包的下载地址:https://www.python.org/downloads/

这里选择2.7.x版本进行下载,因为python3.x版本不兼容systrace命令工具;

下载好后,进行安装,可自行选择安装目录,这里我选择的目录是“D:\Python27”

打开“D:\Python27”,有一个叫python.exe的文件,将该文件的路径添加至环境变量

打开windows的cmd,输入python --version,显示python版本号代表python环境变量添加成功

λ D:\Python27
python --version
λ Python 2.7.18

输入以下命令,安装第三方依赖库(不安第三方依赖库是用不来systrace命令行工具的)

#注意easy_install.exe所在目录为“D:\Python27\Scripts”
D:\Python27\Scripts\easy_install.exe pip

#python.exe已经被设置为环境变量
python -m pip install pypiwin32
python -m pip install matplotlib

下载并安装最新的 Android SDK 工具

(https://developer.android.com/topic/performance/tracing/command-line#syntax)

systrace 命令在 Android SDK 工具软件包中提供,并且可以在 android-sdk/platform-tools/systrace/ 中找到。

将 android-sdk/platform-tools/ 添加到 PATH 环境变量。

 

完成以上步骤,已经可以使用systrace行命令工具抓取systrace报告;

systrace html报告的抓取

systrace命令行工具的语法

  python systrace.py [options] [categories]

 

全局选项


#-h | --help	显示帮助消息。

python systrace.py -h

#-l | --list-categories	列出您的已连接设备可用的跟踪类别。
python systrace.py -l

 

命令和选项	说明
-o file	指定输出文件名。若未指定输出文件名,systrace会将报告保存到systrace.py所在的目录中(默认保存路径),并将其命名为trace.html(默认文件名)。

-t N | --time=N	指定抓取trace的时间,单位秒(默认5秒)。若未指定抓取时长,systrace会提示您在命令行中按Enter键结束跟踪。

-b N | --buf-size=N	使用 N KB 的跟踪缓冲区大小。可人为指定Buffer大小;

-k functions
|--ktrace=functions	跟踪逗号分隔列表中指定的特定内核函数的活动。

-a app-name
|--app=app-name	app名(应用程序的用户)

--from-file=file-path	根据文件(例如包含原始跟踪数据的 TXT 文件)创建交互式 HTML 报告,而不是运行实时跟踪。

-e device-serial
|--serial=device-serial	在已连接的特定设备(由对应的设备序列号标识)上进行跟踪。

categories	包含您指定的系统进程的跟踪信息,如gfx表示用于渲染图形的系统进程。您可以使用-l命令运行systrace,以查看已连接设备可用的服务列表。

1.在线抓取

命令的使用示例

 python systrace.py -o mynewtrace.html sched freq idle am wm gfx view binder_driver hal dalvik camera input res

 

2.离线抓取 Systrace

adb root && adb remount

# 输入以下指令开始后台抓取systrace,此时可断开usb连接线去复现问题

adb shell "atrace -z -b 40000 gfx input view wm am camera hal res"

# 复现问题后,重连usb线输入指令,确认atrace进程是否结束抓取并退出:

adb shell ps -A | grep atrace

 

 

 

 

 

参考:https://developer.android.com/topic/performance/tracing/command-line#syntax

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值