DDMS工作机制
DDMS全称Dalvik Debug Monitor Service.DDMS为IDE和emultor及真正的android设备架起来了一座桥梁,Android DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的
1)每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理,Mutex等等都是依赖底层操作系统而实现的。所有Android应用的线程都对应一个Linux线程。
2)DDMS启动时会与ADB之间建立一个device monitoring service用于监控设备。当设备断开或链接时,这个service就会通知DDMS
3)当一个设备链接上时,DDSM和ADB之间又会建立VM monitoring service用于监控设备上的虚拟机。
4)通过ADB Deamon与设备上的虚拟机的debugger建立链接,这样DDMS就开始与虚拟机对话了
通过DDMS看到目标机器上运行的进程/现成状态,可以 android的屏幕到开发机上,可以看进程的heap信息,可以查看logcat信息,可以查看进程分配内存情况,可以像目标机发送短信以及打电话,可以向android发送地理位置信息。可以像gdb一样attach某一个进程调试。 android SDK tools提供了ddms的功能。
Eclipse安装好adt后会有一个DDMS得perspective.切换到DDMS的视图下:
DDMS视图组成
如上图所示,DDMS视图由3部分组成:左上窗口(device窗口),左下窗口(Emulator Control),右边面板组成。
1、device窗口
device窗口显示了所有当前能找到的所有模拟器或设备列表和每个设备当前正在运行的虚拟机列表。虚拟机是按程序的包命来显示的。device标签栏右上角那一排按钮分别为:调试某个进程,更新某个进程,更新进程堆栈信息,停止某个进程,最后一个图片按钮时抓取android目前的屏幕。
2、Emulator Control
在这里,可以模拟一些设备状态和行为。
Telephony Status:改变电话语音和数据方案的状态,模拟不同的网络速度。
TelePhony Actions:发送模拟的电话呼叫和短信到模拟器。
Location Controls:发送虚拟的定位数据到模拟器里,我们就可以执行定位之类的操作。可以收工的在Manual里输入经度纬度发送到模拟器,也可以通过 GPX和KML文件。
3、右面板
右边那个窗口中有threads, heap ,Allocation Tracker, file explorer选项卡。分别显示线程统计信息,栈信息,分配跟踪器以及android的文件系统。
1)Threads
线程视图列出了此进程的所有线程。
ID:虚拟机分配的唯一的线程ID,在Dalvik里,它们是从3开始的奇数。
Tid:linux的线程ID,For the main thread in a process, this will match the process ID.
Stauts:线程状态,
utime:执行用户代码的累计时间
stime:执行系统代码的累计时间
name:线程的名字
2)VM Heap
展示一些堆的状态,在垃圾回收其间更新。当选定一个虚拟机时, VM Heap视图不能显示数据,可以点击右边面包上的带有绿色的”Show heap updates”按钮,然后在点击”Cause GC “实施垃圾回收更新堆的状态。
3)Allocation Tracker
在这个视图里,我们可以跟踪每个选中的虚拟机的内存分配情况。点击”Start Tracking”后点击”Get Allocations “就可以看到。
4)File Explorer
通过Device > File Explorer 就打开File Explorer。这里可以浏览文件,上传上载删除文件,当然这是有相应权限限制的。
常用工具
1、堆查看
点击Update Heap(更新堆)按钮,获得有关选定虚拟机中堆分配的信息。
图 2
图 3
点击"Cause GC"开始.堆的详细信息被显示出来,并附有针对特定分配类型的分配大小图示。如果您有分配泄漏,这可能是一个很好的检查点,通过观看Heap Size(堆大小)的总体趋势,确保在应用运行期间它不会一直变大。
2、Allocation Tracker(分配跟踪器)
Allocation Tracker(分配跟踪器)视图中显示了有关分配的更深层细节。点击“Start Tracking(开始跟踪)”,在应用中执行某个操作,然后点击“Get Allocations(获得分配)”。
图 4
所示列表按分配排序,首先显示最新的分配。选中它可看到一个关于分配如何创建的堆栈轨迹(stack trace)。
仔细查看分配细节,下面的代码看起来有改进的空间:
dataStr += String.format(" Std. Dev.: %.3f, %.3f, %.3f\n", devX, devY, devZ);
上例可简单重构为下面的代码,节省构造临时char[]的开销。.
dataStrBuilder.append(String.format(" Std. Dev.: %.3f, %.3f, %.3f\n", devX, devY, devZ));
3、Method Profiling(方法分析)
Method Profiling(方法分析)是DDMS的一款工具,对于快速概览应用中时间的消耗分布非常有用,也可用于时间关键型函数的详细查看。
图 6
在应用运行并执行某个有趣的任务时,如果您想获得更多有关该任务的性能数据,点击“Start Method Profiling(开始方法分析)”。分析器只收集少量数据(没见过超过2或3秒),所以,几分钟后再次单击该图标以停止收集。从DDMS中激活方法分析器可使工具自动使用内部存储来存储分析结果,当捕捉完成后,将它们发送回主机,作进一步分析。
IDE将自动启动Traceview窗口,帮助您在IDE(图6)中分析结果。
图 6
解析结果是最有趣的部分。单击底部窗格中的方法调用可创建一个层级结构,为您显示目前的方法——先是调用该方法的母方法,然后是从选定方法中调用的子方法。
分享到:
相关推荐
在Eclipse中,可以通过"Window" -> "Open Perspective" -> "DDMS"来打开DDMS透视图。你也可以通过SDK目录下的`ddms.bat`文件直接启动。 4. **选择调试设备**:在DDMS中,你会看到所有连接的设备或模拟器列表。选择...
在Eclipse中,如果没看到DDMS标签,可以通过"Open Perspective -> DDMS"打开。在DDMS界面,你可以查看和调试运行中的进程,使用Logcat查看日志信息,进行内存分析,模拟地理位置,甚至截取模拟器的屏幕快照。 通过...
使用真实的Android手机来测试百度地图应用,需要将手机设置到启用USB调试,然后将手机连接到电脑,从Eclipse中选择Window- Open Perspective- DDMS打开设备视图,从设备视图上应该出现被连接手机设备。 本文使用...
7. **使用DDMS**:Eclipse中的DDMS透视图也可以查看logcat,点击`Window` -> `Open Perspective` -> `Other` -> `DDMS`。 此外,Android Device Monitor(现在已被Android Studio的Logcat替代)是一个图形界面工具...
- 在Eclipse中打开`Windows -> Open Perspective -> Other -> Memory Analysis`视角。 - 通过`File -> Open File`导入转换后的`.hprof`文件。 - 使用`Dominator Tree`、`Package`等视图分析内存使用情况,查找...
- 通过Eclipse IDE中的`Windows` -> `Open Perspective` -> `DDMS`菜单,可以打开DDMS视图。 2. **关联调试器**: - 要调试应用,首先在设备面板中选中待调试的包名,然后点击绿色小虫图标来启动调试器。这将关联...
- **DDMS**:设备调试桥,用于管理连接到Eclipse的Android设备或模拟器。 #### 六、BMI(身高体重指数)实例 - **导入现有Project**:将已有的BMI项目导入Eclipse。 - **Log日志输出**:使用`Log.i(TAG, Message);...
- 打开Eclipse的DDMS透视图(Window -> Open Perspective -> DDMS -> File Explorer),可以查看SD卡中的信息,实现上传本地文件到SD卡、从SD卡中导出文件以及创建和删除目录等功能。 3. **使用模拟器的Media ...
- 打开Eclipse的`DDMS`视图(`Windows -> Open Perspective -> Other -> DDMS`)。 - 通过`File Explorer`选项卡,浏览SD卡上的文件,并进行操作。 ### 四、管理SD卡上的应用 除了创建和加载SD卡映像外,还需要...
首先启动 MyEclipse,然后通过菜单 `Window` --> `Perspective` --> `Other` --> `DDMS` 打开 DDMS 视图。在 DDMS 视图中选择 SD 卡,然后点击 `Push` 按钮即可将图片等资源添加到 SD 卡。 **2. 使用 SD 卡资源编译...
打开Eclipse,选择`Window > Open Perspective > Other`,打开DDMS工具。 2. 在DDMS工具的`File Explorer`标签页中,选择SDCard目录进行文件的导入和导出操作。 #### 四、在模拟器中使用SDCard中的文件 - **扫描...
- Eclipse:`Window > Open Perspective > DDMS`,确保BlueStacks虚拟机已关联。 - 若未关联,可通过右键点击虚拟机并选择`Connect`进行连接。 - 删除原有的虚拟机配置。 - 运行应用:`Run As > Android ...
2. 选择“Other” -> “DDMS” (Android模拟器调试系统)。 3. 点击“OK”。 4. 在DDMS视图中,点击“File Explorer”。 5. 展开`data/data`节点。 6. 找到项目的包名。 7. 展开`database`节点,可以看到创建的数据库...
在Eclipse中,您可以通过"Window" -> "Open Perspective" -> "Other" -> "DDMS"来启动DDMS,然后在工具栏中找到并运行`Traceview`。 如果在升级ADT后Eclipse报错找不到`DDMS files`,解决方法是手动将`traceview....
在Eclipse中打开DDMS工具:Window > Open Perspective > Other... > DDMS。 2. 在File Explorer标签页内选择SD卡目录,然后导入或导出文件。 #### 四、在模拟器中使用SD卡中的文件 1. **安装文件浏览器查看...
2. **打开 DDMS 视图**:选择菜单栏中的 “Window” > “Perspective” > “Other” > “DDMS”。在 DDMS 视图中,选择 “sdcard” 并点击 “Push” 按钮来推送文件。 3. **配置运行选项**:如果在编译 Android ...
通过“Window” > “Open Perspective” > “Other” > “DDMS”可以切换到DDMS视角。 总结来说,安装Android SDK并配置Eclipse是Android开发的基础步骤。通过这个过程,你可以创建、测试和调试Android应用,为你的...
在ADT中,打开Eclipse IDE,通过菜单栏选择"Window" -> "Open Perspective" -> "Other",然后在打开的窗口中选择"DDMS",这将切换到DDMS透视图。在DDMS视图中,你会看到左侧的"Devices"面板,这里列出了所有连接到...