用Eclipse开发和调试Android应用程序(5)

四、 应用程序调试

要想检查正在运行的应用程序中发生了什么情况,就需要查看正在运行的 Dalvik VM。在 Eclipse 中,选择 Window > Open Perspective > Other。在出现的对话框中选择 DDMS。这会在 Eclipse 中打开一个新的透视图,其中有许多有趣的窗口。

DDMS 为IDE和Emultor(or GPhone)架起来了一座桥梁。Developer可以通过DDMS看到目标机器上运行的进程/线程状态:可以让Eclipse程序连接到开发机上运行;可以看进程的heap信息、logcat信息、进程分配内存情况;可以像目标机发送短信、发送地理位置信息以及打电话;可以像gdb一样attach 某一个进程调试。

下面简要介绍一下 DDMS 透视图中提供的资源:

1. Devices

Device 中罗列了Emulator中所有的进程,选项卡右上角那一排按钮分别为:Debug the selected process调试进程、Update Heap更新进程堆栈信息、Dump HPROF file检查HPROF(Heap/CPU Profiling Tool)文件、Cause GC调用垃圾回收、更新进程Update Threads、Start Method Profiling开始方法分析、Stop Process停止某个进程,和Screen Capture抓取 Emulator目前的屏幕。当你选中某个进程,并按下调试进程按钮时,如果eclipse中有这个进程的代码,那就可以进行源代码级别的调试。有点像 gdb attach。图片抓取按钮可以把当前Android的显示桌面抓到你的机器上,也是非常有用。

用Eclipse开发和调试Android应用程序

 

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

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

2. Emulator Control

通过这个面板的一些功能可以非常容易的使测试终端模拟真实手机所具备的一些交互功能,比如:接听电话,根据选项模拟各种不同网络情况,模拟接受SMS消息和发送虚拟地址坐标用于测试GPS功能等。

用Eclipse开发和调试Android应用程序

 

Telephony Status: 通过选项模拟语音质量以及信号连接模式。

Telephony Actions: 模拟电话接听和发送SMS到测试终端。

Location Control: 模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识,可以通过以下3种方式:

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

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

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

如:在Emulator Control\Telephony Actions 中输入如上图内容“Android 中文”,单击发送后,在Android模拟器中打开Messaging,看到下面的短信:

用Eclipse开发和调试Android应用程序

 

3. 文件管理器

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

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

· mnt是mount,挂装的意思,mnt目录下的 sdcard对应sd卡。

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

用户应用程序部署在 /data/app 目录中,而 Android 内置的应用程序部署在 /system/app 目录中。

用Eclipse开发和调试Android应用程序

 

4. Threads、Heap、Allocation Tracker

Threads视图列出当前进程的所有线程。

Heap视图展示一些堆的状态,在垃圾回收其间更新。当选定一个虚拟机时, VM Heap视图不能显示数据,可以点击右边面包上的带有绿色的”Show heap updates”按钮,然后在点击”Cause GC “实施垃圾回收更新堆的状态。

在Allocation Tracker视图里,我们可以跟踪每个选中的虚拟机的内存分配情况。点击”Start Tracking”后点击”Get Allocations “就可以看到。

例如,为了查看Garbage Collection信息:点击 [Start Tracking]按钮 -> 保持程序运行一段时间后 ->点击[Get Allocations] 按钮,凭借得到的Allocations信息可以通过Line Number准确找到哪里的代码出现了问题。

用Eclipse开发和调试Android应用程序

 

5. LogCat

LogCat 是一个日志文件,它记录 VM 中发生的活动。应用程序可以通过 Log.i(tag,message); 在这个日志文件中添加自己的日志项,其中的 tag 和 message 都是 Java 字符串。Log 类属于android.util.Log 包。

用Eclipse开发和调试Android应用程序

 

6. Console

Android输出的信息,加载程序等信息。

用Eclipse开发和调试Android应用程序

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwfdxf.html