DDMS工具使用

来源:互联网 发布:淘宝高仿皮带 编辑:程序博客网 时间:2024/05/16 17:49

在\android-sdk-windows-1.5_r1\tools目录下,有一个ddms.bat命令;在eclipse中,Window->Open Perspective->Other->DDMS。

那么什么是DDMS呢?在android SDK的文档中可以找到其准确定义和使用方法,如下图:

Android:DDMS工具的使用

下面,我简单介绍一下在我的工作中使用到了哪些DDMS。

 

1. DDMS是桥梁

    DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。

    DDMS为IDE和emultor及真正的android设备架起来了一座桥梁。开发人员可以通过DDMS看到目标机器上运行的进程/现成状态,可以android的屏幕到开发机上,可以看进程的heap信息,可以查看logcat信息,可以查看进程分配内存情况,可以像目标机发送短信以及打电话,可以像android开发发送地理位置信息。可以像GDB一样attach某一个进程调试。

 

2.DDMS 的工作原理

      DDMS将搭建起IDE与测试终端(Emulator 或者connected device)的链接,它们应用各自独立的端口监听调试器的信息,DDMS可以实时监测到测试终端的连接情况。当有新的测试终端连接后,DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的。

clip_image006

      DDMS监听第一个终端App进程的端口为8600,APP进程将分配8601,如果有更多终端或者更多APP进程将按照这个顺序依次类推。DDMS通过8700端口(“base port”)接收所有终端的指令。

     打开后的窗口为:

clip_image008

 

3.DDMS介绍

Android:DDMS工具的使用
(1)Device选项卡

     在GUI的左上角可以看到标签为”Devices”的面板,这里可以查看到所有与DDMS连接的终端的详细信息,以及每个终端正在运行的APP进程,每个进程最右边相对应的是与调试器链接的端口。因为Android是基于Linux内核开发的操作平台,同时也保留了Linux中特有的进程ID,它介于进程名和端口号之间。

     Device中罗列了Emulator中所有的进程,选项卡右上角那一排按钮分别为:调试进程、更新进程、更新进程堆栈信息、停止某个进程,最后一个图片按钮是抓取Emulator目前的屏幕。

clip_image006[1]

当你选中某个进程,并按下调试进程按钮时,如果eclipse中有这个进程的代码,那就可以进行源代码级别的调试。有点像gdb attach。图片抓取按钮可以把当前android的显示桌面抓到你的机器上,也是非常有用。
(2)Threads选项卡

显示线程统计信息

(3)Heap选项卡

显示栈信息

(4)File Explorer选项卡

显示GPhone Emulator的文件系统信息。File Explorer非常有用:它可以把文件上传到GPhone或GPhone Emulator、或者从GPhone上下载文件下来、也可以进行文件删除操作。选项卡右上角有上传、下载、删除三个按钮。一般情况下,File Explorer会有如下三个目录:data、sdcard、system。

Android:DDMS工具的使用

Android:DDMS工具的使用

  • data对应手机的RAM,会存放android OS运行时的Cache等临时数据(/data/dalvik-cache目录);没有root权限时apk程序安装在/data/app中(只是存放apk文件本身);/data/data中存放Emulator或GPhone中所有程序(系统apk+第三方apk)的详细目录信息,如下图:

Android:DDMS工具的使用

  • sdcard对应sd卡。
  • system对应手机的ROM,OS以及系统自带apk程序等存放在这里。

(5)Emulator Control选项卡

通过它可以向手机发送短信、打电话、更新手机位置信息。

      Telephony Status: 通过选项模拟语音质量以及信号连接模式。 
      Telephony Actions: 模拟电话接听和发送SMS到测试终端。 
      Location Control: 模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识,可以通过以下3种方式:

             · Manual: 手动为终端发送二维经纬坐标。

             · GPX: 通过GPX文件导入序列动态变化地理坐标,从而模拟行进中GPS变化的数值。

             · KML: 通过KML文件导入独特的地理标识,并以动态形式根据变化的地理坐标显示在测试终端。

clip_image011

clip_image013

      LogCat:显示输出的调试信息。

     Console(控制台):是Android模拟器输出的信息,加载程序等信息;

 


总结:
Eclipse ADT目前提供的的ddms功能只是真正ddms的一小部分,你可以通过ddms.bat命令来使用所有功能。其中有一个查看进程内存分配的功能比较有用。

另个要注意的是,在DDMS中模拟发送短信时,中文显示为乱码,在未来的开发中,我们必须要注意中文字符的问题。


一.查看进程的堆栈使用情况

1.选中你要查看的进程;
2.点击“ Update Heap”按钮开启该进程的该项功能,如果单独打开ddms工具,按钮名为“Show heap updates”;
3.点击“Cause GC”按钮来进行垃圾回收,当操作完成后,您会看到一组对象类型和为每种类型已分配的内存;
4.点击列表中的一个对象类型,为该种特定内存大小的对象分配的数量。
heap.jpg 
二.跟踪对象的内存分配
1.在“设备”选项卡中,选择要启用的分配跟踪的进程;
2.在“分配跟踪”选项卡上,单击“开始跟踪”按钮开始分配跟踪,从这一时开始,你的应用程序所做的任何事将被跟踪。
3.单击”Get Allocations“,可以看到一个列表,当要继续跟踪时,可以重新点击”开始跟踪“按钮。
4.要停止跟踪或清除数据,并重新开始,请单击“停止跟踪”按钮。
5.点击列表中某一项,可以看到更多的信息,该条目的方法,所属对象以及代码行号等详细信息。
trace.jpg 
三.操作仿真器或设备的文件系统
1.在“设备”选项卡中,选择您想要查看的文件系统的仿真器。
2.从设备复制文件,在文件浏览器中找到该文件,然后单击“Pull file”按钮。
3.要复制一个文件到设备上的文件资源管理器“Push file ”按钮。
四.检查线程信息
1.在“设备”选项卡中,选择进程;
2.单击”Update Threads“按钮.单独打开ddms,显示”show thread update“。
3.在“Threads”选项卡上,您可以查看所选进程的线程信息。
thread.jpg 
五.方法分析
方法分析的方式来追踪特定的度量方法,如调用次数,执行时间,执行的方法花费的时间。
在您开始在DDMS的方法分析,注意以下限制:
Android 1.5的设备不被支持。
Android 2.1和更早版本的设备都必须有一个SD卡和你的应用程序必须写入SD卡的权限。
Android 2.2及更高版本的设备并不需要一个SD卡。跟踪日志文件直接传输到你的开发机。
1.在“设备”选项卡中,选择进程。
2.点击Start Method Profiling按钮。
3.与应用程序交互,启动你要分析的方法。
4.单击“停止”的方法剖析按钮。 DDMS停止分析您的应用程序,打开Traceview的方法收集的分析信息。
六.使用的网络流量工具
在Android 4.0, DDMS 具备监控详细的网络使用情况的功能,使得它可以跟踪您的应用程序的网络请求。使用这个工具,你可以监视应用程序的数据传输,并适当优化的底层代码。
七.使用LogCat
当你设置你的日志,你可以用logcat的功能, DDMS过滤某些信息通过下面的按钮:
详细
调试
信息
警告
错误
您还可以设置自己的自定义过滤器指定更多的细节,如过滤消息的日志标签或生成日志消息的进程ID 。
filter.jpg 
八.模拟电话业务和位置
”Emulator control “可以模拟手机的语音和数据网络的状态。这是非常有用的,当你想测试你的应用程序在不同网络环境下的鲁棒性。可以设置下面的选项:
  • Voice - unregistered, home, roaming, searching, denied
  • Data - unregistered, home, roaming, searching, denied
  • Speed - Full, GSM, HSCSD, GPRS, EDGE, UMTS, HSDPA
  • Latency - GPRS, EDGE, UMTS
九.模拟来电或SMS文本消息
声音 - 在“来电号码”字段中输入一个数字,然后点击呼叫,模拟呼叫发送到模拟器或手机。点击挂断键终止通话。
短信 - 来电号码字段和在消息中:“字段中输入一个数字,然后点击”发送“按钮发送消息。
十.设置手机地理位置
如果您的应用程序依赖于位置的手机,你可以有的DDMS送您的设备或AVD一个模拟的位置。这是非常有用的,如果你想测试你的应用程序的特定位置的功能,而不必实际移动的不同方面。您可以使用下面的地理位置数据类型:
手动设置位置 - 通过手动指定十进制或六十进制的经度和纬度值。
GPX - GPS交换文件
KML - Keyhole标记语言文件
0 0