DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供了许多有用的服务,例如:可以为设备截屏;针对特定的进程查看正在运行的线程以及堆信息;Logcat信息;广播状态信息;模拟电话呼叫;接收SMS;虚拟地理坐标等等,是我们在开发过程当中十分重要的工具之一。
DDMS 工具存放在Android-sdk/tools/路径下,直接双击ddms.bat运行DDMS,如果是在eclipse中,则通过Window->Open Perspective->Other->DDMS打开DDMS。
图1-18 DDMS窗口
DDMS的工作原理:
DDMS搭建起IDE与我们测试终端(模拟器或真机)的链接,它们使用各自独立的端口来监听调试器的信息,DDMS可以实时监控测试终端的链接情况。当有新的测试终端链接后,DDMS将捕捉到终端的ID,并通过ADB建立调试器,从而实现发送指令到测试终端的目的。
DDMS是一座桥梁,它为IDE和Emultor(or GPhone)架起来了一座桥梁。开发者可以通过DDMS看到目标机器上运行的进程/线程状态;可以让Eclipse程序连接到开发机上运行;可以看进程的heap信息、logcat信息、进程分配内存情况;可以像目标机发送短信、发送地理位置信息以及打电话;可以像gdb一样attach某一个进程调试。
DDMS介绍:
1)Device选项卡
如图1-19所示。
图1-19 Device选项卡
Device中罗列了模拟器或真机中所有的进程,选项卡右上角那一排按钮分别为:调试进程、更新进程、更新进程堆栈信息、停止某个进程,最后一个图片按钮是抓取Emulator目前的屏幕。当你选中某个进程,并按下调试进程按钮时,如果eclipse中有这个进程的代码,那就可以进行源代码级别的调试。有点像gdb attach。图片抓取按钮可以对当前Android设备的显示界面进行截图,也是非常有用的。
2)Threads选项卡
显示线程统计信息,如图1-20所示。
图1-20 Threads选项卡
3)Heap选项卡
显示栈信息,如图1-21所示。
图1-21 Heap选项卡
经验分享: Heap选项卡在做应用的内存优化的时候,会发挥着重要的作用。具体的,会在后面的章节中仔细说明。 |
4)File Explorer选项卡
显示文件信息,如图1-22所示。
图1-22 FileExplorer选项卡
显示Android设备或模拟器上的文件系统信息。FileExplorer非常有用:它可以把文件上传到Android设备或模拟器;或者从设备上下载文件;也可以进行文件删除操作。选项卡右上角有上传、下载、删除三个按钮。一般情况下,File Explorer会有如下三个目录:data、sdcard、system。
data对应手机的RAM,会存放Android OS运行时的Cache等临时数据(/data/dalvik-cache目录);没有root权限时apk程序安装在/data/app中(只是存放apk文件本身);/data/data中存放Emulator或GPhone中所有程序(系统apk+第三方apk)的详细目录信息。
sdcard对应sd卡。
system对应手机的ROM,OS以及系统自带apk程序等存放在这里。
DDMS监听第一个终端App进程的端口为8600,APP进程将分配8601,如果有更多终端或者更多APP进程将按照这个顺序依次类推。DDMS通过8700端口(“base port”)接收所有终端的指令。
5)Emulator Control选项卡
模拟控制选项卡,如图1-23所示。
图1-23 EmulatorControl选项卡
通过它可以模拟出向手机发送短信、打电话、更新手机位置信息。
在Emulator Control\Telephony Actions 中输入以下内容,如图1-24所示。
图1-24 模拟发送短信
点击Send按钮后,则向Android模拟器发送短信,打开模拟器,则有一条短信提示,点击打开后,如图1-25所示。
图1-25 接收短信
6)Logcat选项卡
可以在程序中,通过使用Log类来向LogCat打印信息。示例请见图1-26。
图1-26 Logcat选项卡
我们可以通过点击右上角的“+”按钮添加Log Filter来过滤来查看Log信息,例如,我们只想查看“System.out”的日志信息,则为我们添加一个filter如图1-27所示。
图1-27 添加Log Filter
点击“OK”按钮后,则添加了一个Log Filter,里面显示的全是System.out打印出来的Log信息。