网站集约化平台建设,网站做会员系统,肇庆seo外包服务,h5网站开发实例教程1 抓取方法
根据不同的配置参数#xff0c;会显示不同的功能。 比如有的trace文件就无法显示线程状态信息#xff0c;有的无法显示锁依赖信息等等#xff0c;要看你的参数#xff0c;我这个是很全的#xff0c;基本够了#xff0c;如果还想添加#xff0c;可以命令行看…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) waiters0 blocking from void xxx.xxx.YtestUtils.lock3()(YtestUtils.java:54) 还有一种方法直接跳点击lock3()上面的线程状态-Running就会出来详细信息详细信息里面有cpu运行信息running on CPU5,点击这个箭头就能调到截图中的信息了小黑点就是依赖的线程信息依次点击可以查看多个依赖。 2.3 如何查看调用依赖路径 这个要看加的log了如果没加就看不出来就行截图中的这些类似堆栈信息的流程都是amswms加了trace打印才展示的我们也可以加 要有开始有结束 Trace.beginSection(yangtest3); Trace.endSection(); 2.4 这个工具的缺点 范围太小如果没加trace的话即根本显示不出来比如如果我不再lock2lock3加trace信息peffeto只会显示一条这个线程执行的时间线根本看不出锁等待信息。 所以他适用与系统分析进程间分析要想具体的app分析还是离不开android studio的profile的火焰图。 2.5 插小红旗可以标记方便下次查看时快速定位可以插入时间线方便分析时间推理 2.6 置顶可以置顶某个线程这样可以将相关的线程位置靠近方便横向对比 2.7 鼠标放到cpu某个task可以看到该task在所有cpu上的执行情况执行时间执行多久在哪个cpu上 2.8 鼠标划定一个区域下面详情可以看到cpu的负载情况 以上技巧足以协助我解决相关问题了