android perfetto使用技巧梳理

1 抓取方法

根据不同的配置参数,会显示不同的功能。

比如有的trace文件就无法显示线程状态信息,有的无法显示锁依赖信息等等,要看你的参数,我这个是很全的,基本够了,如果还想添加,可以命令行看下你机器支持那些tag,都加近来,命令行参考我之前写的文章。

开始:

1.1 直接抓:adb shell atrace --async_start -b 30720 gfx input view webview wm am sm audio video binder_lock binder_driver camera hal res dalvik rs bionic power pm ss database network adb vibrator aidl sched

1.2 抓app自定义:adb shell atrace --async_start -b 30720 gfx input view webview wm am sm audio video binder_lock binder_driver camera hal res dalvik rs bionic power pm ss database network adb vibrator aidl sched -a xxx.xxx.xxx

停止:

adb shell atrace --async_stop -z -c -o /data/local/tmp/y_trace

adb pull /data/local/tmp/y_trace /home/yang/code

2 分析技巧

2.1 如何查看binder对端

点击binder transaction 这个方块,下面详情里就有对端的小箭头,点下就跳过去了

2.2 如何查看锁依赖路径

如果有锁依赖的化,下面会直接标记一个块块,长度就是等待的时常

lock3方法的执行需要等待lock2方法释放同一个锁后才能执行

直接看下图里面写的确实够清晰,连等待多久都用方块的长度画出来了:

monitor contention with owner Thread-7 (26) at void xxx.xxx.YtestUtils.lock2()(YtestUtils.java:41) waiters=0 blocking from void xxx.xxx.YtestUtils.lock3()(YtestUtils.java:54)

还有一种方法直接跳:点击lock3()上面的线程状态-Running,就会出来详细信息,详细信息里面有cpu运行信息:running on CPU5>,点击这个箭头,就能调到截图中的信息了,小黑点就是依赖的线程信息,依次点击,可以查看多个依赖。

2.3 如何查看调用依赖路径

这个要看加的log了,如果没加,就看不出来,就行截图中的这些类似堆栈信息的流程,都是ams,wms加了trace打印才展示的,我们也可以加:

要有开始,有结束

Trace.beginSection("yangtest3");

Trace.endSection();

2.4 这个工具的缺点

范围太小,如果没加trace的话,即根本显示不出来,比如如果我不再lock2()lock3()加trace信息,peffeto只会显示一条这个线程执行的时间线,根本看不出锁,等待信息。

所以他适用与系统分析,进程间分析,要想具体的app分析,还是离不开android studio的profile的火焰图。

2.5 插小红旗,可以标记,方便下次查看时快速定位,可以插入时间线,方便分析时间推理

2.6 置顶,可以置顶某个线程,这样可以将相关的线程位置靠近,方便横向对比

2.7 鼠标放到cpu某个task,可以看到该task在所有cpu上的执行情况(执行时间,执行多久,在哪个cpu上)

2.8 鼠标划定一个区域,下面详情可以看到cpu的负载情况

以上技巧足以协助我解决相关问题了

相关推荐
TeleostNaCl1 天前
如何安装 Google 通用的驱动以便使用 ADB 和 Fastboot 调试(Bootloader)设备
android·经验分享·adb·android studio·android-studio·android runtime
fatiaozhang95271 天前
中国移动浪潮云电脑CD1000-系统全分区备份包-可瑞芯微工具刷机-可救砖
android·网络·电脑·电视盒子·刷机固件·机顶盒刷机
2501_915918411 天前
iOS 开发全流程实战 基于 uni-app 的 iOS 应用开发、打包、测试与上架流程详解
android·ios·小程序·https·uni-app·iphone·webview
lichong9511 天前
【混合开发】vue+Android、iPhone、鸿蒙、win、macOS、Linux之dist打包发布在Android工程asserts里
android·vue.js·iphone
Android出海1 天前
Android 15重磅升级:16KB内存页机制详解与适配指南
android·人工智能·新媒体运营·产品运营·内容运营
一只修仙的猿1 天前
毕业三年后,我离职了
android·面试
编程乐学1 天前
安卓非原创--基于Android Studio 实现的新闻App
android·ide·android studio·移动端开发·安卓大作业·新闻app
雅雅姐1 天前
Android14 init.rc中on boot阶段操作4
android
fatiaozhang95271 天前
中国移动中兴云电脑W132D-RK3528-2+32G-刷机固件包(非原机制作)
android·xml·电脑·电视盒子·刷机固件·机顶盒刷机
Android出海1 天前
Google Play账户与App突遭封禁?紧急应对与快速重构上架策略
android·网络·重构·新媒体运营·产品运营·内容运营