首页 > 代码库 > 第一章 工欲善其事 必先利其器—Android SDK工具(4)

第一章 工欲善其事 必先利其器—Android SDK工具(4)

1.4 Android调试—调试工具( DDMS)

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信息。


第一章 工欲善其事 必先利其器—Android SDK工具(4)