美文网首页
安卓中DDMS和TraceView

安卓中DDMS和TraceView

作者: 帝王鲨kingcp | 来源:发表于2018-02-07 14:32 被阅读0次

DDMS

DDMS (Dalvik Debug Monitor Service)是安卓开发环境中的Dalvik虚拟机调试监控服务。可以进行的操作有:为测试设备截屏,查看特定行程中正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等,功能非常强大,对于安卓开发者来说是一个非常好的工具。
下面的图片显示DDMS中具体的作用:


DDMS.png

自己可以在AndroidStudio中打开Android Device Monitor进行尝试:


AndroidDeviceMonitor.png

TraceView

TraceView简介

TraceView是AndroidSDK里面自带的工具,用于对Android的应用程序以及Framework层的代码进行性能分析。
TraceView是图形化的工具,最终它会产生一个图表,用于对性能分析进行说明。
TraceView可以跟踪到具体的Method

生成TraceView日志的两种方法

  1. TraceView通过修改code,在需要调试的起始位置加入调试函数,程序运行之后会在SD的根目录下产生.trace文件来保存运行时的数据,然后把.trace文件考到pc机上,通过traceview命令对*.trace文件进行分析。
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //如果6.0及以上的系统,因为WRITE_EXTERNAL_STORAGE权限,需要加入运行时权限代码
    Debug.startMethodTracing("filename");
}
protected void onDestroy() {
    super.onDestroy();
    Debug.stopMethodTracing();
}
  1. 利用AndroidDeviceMonitor工具辅助(Start Method Profiling)生成traceview日志。此方法适用于没有目标应用源代码的情况。

分析TraceView表格

如果是代码生成的,就导出sdcard/filename.trace,让后通过AndroidDeviceMonitor中File->Open File打开。

//导出到桌面上
adb pull /sdcard/filename.trace C:\Users\Administrator\Desktop
生成如下表格:
Traceview界面UI划分为上下两个面板,即Timeline Panel(时间线面板)和Profile Panel(分析面板)。 TraceView.png
TimeLine Panel(时间线面板) 时间线面板.png
Profile Panel(分析面板) 分析面板.png
列名 描述
Name 该线程运行过程中所调用的函数名
Incl Cpu Time 某函数占用的CPU时间,包含内部调用其它函数的CPU时间
Excl Cpu Time 某函数占用的CPU时间,但不含内部调用其它函数所占用的CPU时间
Incl Real Time 某函数运行的真实时间(以毫秒为单位),内含调用其它函数所占用的真实时间
Excl Real Time 某函数运行的真实时间(以毫秒为单位),不含调用其它函数所占用的真实时间
Call+Recur Calls/Total 某函数被调用次数以及递归调用占总调用次数的百分比
Cpu Time/Call 某函数调用CPU时间与调用次数的比。相当于该函数平均执行时间
Real Time/Call 同CPU Time/Call类似,只不过统计单位换成了真实时间
了解完Traceview的UI后,现在介绍如何利用Traceview来查找hotspot(热点或者说是瓶颈,可以优化的地方)。

一般而言,hotspot包括两种类型的函数:

  1. 一类是调用次数不多,但每次调用却需要花费很长时间的函数。
  2. 一类是那些自身占用时间不长,但调用却非常频繁的函数。

相关文章

网友评论

      本文标题:安卓中DDMS和TraceView

      本文链接:https://www.haomeiwen.com/subject/wkkbzxtx.html