安卓中DDMS和TraceView

DDMS

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


安卓中DDMS和TraceView_第1张图片
DDMS.png

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


安卓中DDMS和TraceView_第2张图片
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(分析面板)。
安卓中DDMS和TraceView_第3张图片
TraceView.png
TimeLine Panel(时间线面板)
安卓中DDMS和TraceView_第4张图片
时间线面板.png
Profile Panel(分析面板)
安卓中DDMS和TraceView_第5张图片
分析面板.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)