首页 > 编程知识 正文

vmp3 trace代码能分析不,安卓界面分析工具

时间:2023-05-05 15:28:37 阅读:110525 作者:2907

Traceview本身是一种数据分析工具,安卓平台将Traceview作为安卓SDK的嵌入式工具,主要加载安卓APP应用程序生成的trace文件,由trace文件收集

要收集Trace文件中的数据,必须使用Android SDK的调试类或使用DDMS工具

Traceview位于Android SDK的工具目录中。 如下图所示。

设定环境

步骤1 :在系统变量中创建新的ANDROID_HOME

第二步:将%ANDROID_HOME%tools添加到系统变量的Path

使用代码生成trace文件

在需要解析代码的开始位置添加以下代码

//文件默认保存在sdcard根目录中,'/sdcard/testTraceView.trace '

debug.startmethodtracing (testtrace view );

复制代码

其中testTraceView参数是自定义的,是生成的TraceView文件的文件名,例如testTraceView.trace

在要分析的结束位置添加以下代码

Debug.stopMethodTracing (;

复制代码

添加的权限

复制代码

错误报告示例

无法取得权限

e/art : unabletoopentracefile '/SD card/testtrace.trace ' : permission denied

复制代码

打开testTrace.trace文件时发生错误,因为Debug.stopMethodTracing ()没有运行。

failedtoreadthetracefilejava.io.io exception : keysectiondoesnothavean * end marker

atcom.Android.trace view.dmtr acereader.parse keys (dmtr acereader.Java :420 ) )。

atcom.Android.trace view.dmtr acereader.generate trees (dmtr acereader.Java :91 ) )。

atcom.Android.trace view.dmtr acereader.(dmtr acereader.Java :87 )

atcom.Android.trace view.main window.main (main window.Java :286 ) )。

复制代码

打开testTrace.trace文件时报告错误的重要提示: keysectiondoesnothavean * endmarkeratcom.Android.trace view位于debug.stopmethop

确认是否生成trace文件

进入shell模式并运行以下命令语句,以在doc命令窗口或AndroidStudio中的Terminal窗口中运行ADB shell : 下图本人写的demo在AndroidStudio中的Terminal窗口中看到的屏幕截图:

注意: debug.startmethodtracing (' testtrace view ' ); startMethodTracing的参数只需填写testTraceView,上面截图的步骤只需执行1、2这2个步骤就可以看到testTraceView.trace文件,本人为什么要3 请看本人demo的startMethodTracing的参数

导出跟踪文件

进入shell模式并运行以下命令语句ADB pull/SD card/testtraceview.tracee : folder,将testtrace view.trace导出到e驱动器上指定的folder目录

要在本人demo中执行的命令包括: ADB pull/SD card/trace view/main activity _ 2018-12-07 _ 20 _ 29 _ 02.trace ee 3360 _ folder

打开跟踪文件

进入shell模式并执行以下命令语句traceviewe :foldertesttrace view.trace

跟踪视图界面简介

Traceview界面分为上下两部分

上面是时间轴面板(Timeline Panel ) )。

左侧显示线程信息

右侧的颜色表示不同的方法(函数),相同的颜色越长,方法的执行时间越长

如果将鼠标悬停在右侧,将显示时间轴的垂直轴,顶部将显示在当前时间轴上运行的特定函数信息

空白表示在此时间段内没有执行内容

接下来是分析面板

各列作用的说明

列名

说明

名字

线程执行过程中调用的函数名称

Incl Cpu Time

某个函数占用的CPU时间。 包含内部调用其他函数的CPU时间

Excl Cpu Time

某个函数消耗的CPU时间。 不包括内部调用中其他函数消耗的CPU时间

Incl Real Time

函数执行的实际时间。 以毫秒为单位。 包含调用其他函数所用的实际时间

Excl Real Time

函数执行的实际时间。 以毫秒为单位。 不包括调用其他函数所消耗的实际时间

呼叫接收呼叫/总

递归调用占调用函数的次数和调用总数的百分比

Cpu Time/Call

某个函数调用CPU的时间与调用次数之比。 相当于该函数的平均执行时间

实时时间

与CPU Time/Call类似,只是统计单位变成了实时

注:每个Time列还对应一个按时间百分比计数的列。 例如,Incl Cpu Time列还对应一个名为Incl Cpu Time %的列,表示按时间百分比计数的Incl Cpu Time。 )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。