Android系统 抓trace方法(手机及车机)

1、先说说什么是trace

trace是一种以perfetto.trace结尾的文件。一般用来分析卡顿、启动时间慢等问题,还可以用来分析方法耗时,android系统的性能、功耗等等问题。所需要使用到的网站是:

Perfetto UI

他的前身是Systrace,不过Perfetto更清晰,更强大。

2、如何抓取

考虑到很多小伙伴使用的系统是windows和ubuntu系统,这里提供这两种系统的抓取方式。

前提条件:对于抓取perfetto,android版本需要大于等于10, 我自己测试了下android 9 的发现抓不了,即使android 9 里面的bin路径下有perfetto依旧抓不了,会报错。如果安卓10的抓不了,在抓之前执行下命令:

adb shell setprop persist.traced.enable 1

对于android 9以下要想抓去trace只能使用systrace或者atrace

2.1、windows系统

这有个脚本可以直接使用。文件放在最后的网盘链接里了。

下载解压完成后,使用usb线连接手机或者车机,android车机的可能需要root,或者使用Debug版本。连接完成后使用adb devices查看是否成功连接。

点击go.bat会弹出一个命令窗口,此时就已经开始抓取了。你可以在手机或者车机上复现你想查看的场景。操作结束后,点击任意键结束录制。录制文件会保存在go.bat的同级目录下。

2.2、ubuntu系统

通过网盘链接下载base_config和record_android_trace。

record_android_trace是一个脚本文件

base_config是配置文件。

方法1, 直接配置trace tag

python3 record_android_trace -o trace_file.perfetto-trace -t 10s -b 32mb  sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory

 其中 -t 表示录制时间,-b表示缓存大小,可以自定义。后面的就是需要抓取的数据。

# 抓perfetto 方法2,使用配置文件

python3 record_android_trace -c base_config -o trace_file.perfetto-trace

按CTRL+C结束录制,结束后会自动弹出Perfetto网站并加载文件。(推荐使用)

2.3、以上都抓取都无效的情况。

我在最近的实验中发现,上述方法可以抓取,但是Perfetto网站怎么也读取不成功,或者直接就是抓取失败。

如果上述两种方法都不行,那就只能使用adb命令进行抓取。

adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s sched freq idle am wm gfx view

adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace

要更改抓取时间则将 -t 后面的值替换即可,如果要增加缓存大小,则加 -b 对应的大小值mb

3、除了Perfetto外其他抓trace的方法

在android 9 以及以下的版本是用不了perferro的,可以使用systrace或者atrace进行抓取。下面介绍两种方法:

3.1、systrace

systrace的工具在android SDK的platform tool的systrace里面。不过新版本的SDK已经移除了这个工具,需要下载33版本或者之前的。文章最后链接里有可自行提前。

首先你的python环境需要是2.7,python2.7下载链接:(Python 2.7.0 Release | Python.org),

确认你的android设备是user 可以root的,或者是userdebug的。

进入你的SDK的platform-tools/systrace目录下:

执行

python systrace.py am wm view app res ss gfx  view hal bionic pm sched irq freq idle disk mmc load sync workq binder_driver binder_lock pagecache memreclaim dalvik input -t 5 -o systrace.html

具体用法可以使用python systrace.py --help 查看


Usage: systrace.py [options] [category1 [category2 ...]]

category可以使用 python systrace.py --list-categories查看

抓取结束后可以在google chrome的浏览器中输入chrome://tracing/ 进行分析,点击load加载刚抓取的systrace.html

3.2、atrace

开始抓取

adb shell atrace -b 25600 --async_start wm am gfx dalvik binder_lock binder_driver sched

停止抓取

adb shell atrace --async_stop -o /data/local/tmp/boot_trace

用法和systrace差不多

adb shell atrace --help 查看具体用法
usage: atrace [options] [categories...]

adb shell atrace --list_categories 查看可用的categories

抓取完成后需要用把boot_trace 从机器里pull出来,使用systrace.py转换成html格式才能在chrome://tracing/上面分析

转换命令:

Python systrace.py --from-file boot_trace -o output.html

4、文件提取处

链接: https://pan.baidu.com/s/1NZUKRaGnXi2Fj-Ph4Hby7g

提取码: 8p6f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值