DDMS全称:Dalvik Debug Monitor Service


一,DDMS的作用

它提供了截屏、查看线程和堆信息、logcat、进程、广播状态信息、模拟来电呼叫和短信、虚拟地理坐标等等。


二,DDMS怎样工作

1.每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理,Mutex等等都是依赖底层操作系统而实现的。所有Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的 依赖操作系统的线程调度和管理机制。 
2.DDMS在IDE与设备或模拟器之间的起着中间人的角色。 
3.DDMS启动时会与ADB之间建立一个device monitoring service用于监控设备。当设备断开或链接时,这个service就会通知DDMS。 
4.当一个设备链接上时,DDSM和ADB之间又会建立VM monitoring service用于监控设备上的虚拟机。 
5.通过ADB Deamon与设备上的虚拟机的debugger建立链接,这样DDMS就开始与虚拟机对话了。


三,端口

1.对于设备上每个虚拟机的debugger, DDMS都会开启一个监听端口。端口从8600开始。 
2.8700端口


四,左边面板

1.左边显示了所有当前能找到的所有模拟器或设备列表和每个设备当前正在运行的虚拟机列表。虚拟机是按程序的包命来显示的。 
2.通过这些列表可以找到运行着想调试的activity的虚拟机。每个虚拟机旁边的是“debugger pass-through”端口,链接到其中一个端口就会链接到设备上对应的虚拟机。不管如何,在用DDMS时,只需要链接到8700端口,因为DDSM 转发所有的通信到当前选择的虚拟机。这样,就不用在每次切换虚拟机是重新配置debugger端口。 
3.当一个正在运行的程序调用waitForDebugger()函数时,客户端名字旁边会显示一个红色的icon,知道debugger连上对 应的虚拟机,这是debugger会变成绿色。 
4.如果看到叉icon,着意味着DDMS用于不能打开虚拟机的端口而不能建立debugger与虚拟机建立连接。如果看到所有的虚拟机是这样, 很可能是有另外一个DDSM实例在运行。


五,右边面板

1.info 
这里显示关于选中的VM的一般的信息,包括进程ID,包名,和虚拟机版本。 
2.Threads 
线程视图列出了此进程的所有线程。 
ID:虚拟机分配的唯一的线程ID,在Dalvik里,它们是从3开始的奇数。 
Tid:linux的线程ID,For the main
thread in a process, this will match the process ID. 
Stauts:线程状态, 
running:正在执行程序代码 
sleeping:执行了Thread.sleep() 
monitor:等待接受一个监听锁。 
wait:Object.wait() 
native:正在执行native代码 
vmwait:等待虚拟机 
zombie:线程在垂死的进程 
init:线程在初始化(我们不可能看到) 
starting:线程正在启动(我们不可能看到) 
utime:执行用户代码的累计时间 
stime:执行系统代码的累计时间 
name:线程的名字 
3.VM Heap 
展示一些堆的状态,在垃圾回收其间更新。当选定一个虚拟机时, VM Heap视图不能显示数据,可以点击右边面包上的带有绿色的”Show heap updates”按钮,然后在点击”Cause GC “实施垃圾回收更新堆的状态。 
4.Allocation Tracker 
在这个视图里,我们可以跟踪每个选中的虚拟机的内存分配情况。点击”Start
Tracking”后点击”Get Allocations “就可以看到。

我们在利用AS ES 开发Android app
时,难免会遇到有GC 这样的日志产生,这是内存没有合理分配的原因;

先点击start tracking,然后一边操作界面事件的同时,一边点击get
alloctions 来收集相关的内存分配信息,然后点击上方的item,让数量大小排序,也可以添加filter,从而快速定位到跟你app相关的包名或着类,根据信息,可以快速定位到类中的某一行,然后就是那一行出现GC 异常了,最后解决便是。

5.Emulator
Control 


在这里,可以模拟一些设备状态和行为。 
Telephony Status:改变电话语音和数据方案的状态,模拟不同的网络速度。 
TelePhony Actions:发送模拟的电话呼叫和短信到模拟器。 
Location Controls:发送虚拟的定位数据到模拟器里,我们就可以执行定位之类的操作。可以收工的在Manual里输入经度纬度发送到模拟器,也可以通过 GPX和KML文件。


六,其他

1.File Explorer 
通过Device > File Explorer 就打开File
Explorer。这里可以浏览文件,上传上载删除文件,当然这是有相应权限限制的。 
2.Screen Capture 
通过Device > Screen Capture 就可以截图。 
3.Exploring Processes 
通过Device  > Show process status ,这里的信息是通过shell命令”ps -x”输出的。 
4.Examine Radio State 
通过Device > Dump radio,检测广播状态。 
5.Stop a Virtual Machine 
通过Actions > Halt VM ,停止一个虚拟机。

DDMS介绍的更多相关文章

  1. 菜鸟Android之路(上)

    自己为什么要学android 本人作为应届毕业生,自己进入社会前做过好多梦,可是呢,现实还是打败了无邪!!面对社会的压力和残酷的竞争力自己如何生成下去??我自己对自己说:第一步 先养活自己,才能走好以 ...

  2. Android宝典入门篇-基础知识

    今天跟大家分享的是我学android时的笔记.以前搞net很多年了,现在还在搞这.本着活到老学到老抽了点时间学习了下android.android网上有很多的视频教程,当时对于我这样以前不了解java ...

  3. 请介绍下 adb、ddms、aapt 的作用

    adb 是 Android Debug Bridge ,Android 调试桥的意思 ddms 是 Dalvik Debug Monitor Service,dalvik 调试监视服务. aapt 即 ...

  4. Android-Using DDMS

    原文:http://developer.android.com/tools/debugging/ddms.html#how-ddms-works Android提供了一个debug工具叫做:DDMS, ...

  5. android调试工具DDMS的使用详解

    具体可见http://developer.android.com/tools/debugging/ddms.html. DDMS为IDE和emultor.真正的android设备架起来了一座桥梁.开发 ...

  6. Android Studio中怎么使用DDMS工具?

    随着android studio的广泛使用,开发人员对相关工具的使用需求更加凸显.昨天在一个android studio教程网站上,看到一篇有关DDMS工具使用的相关知识,感觉很不错,分享给大家,一起 ...

  7. Android系统性能调优工具介绍

    http://blog.csdn.net/innost/article/details/9008691 经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优 ...

  8. Android性能优化之Systrace工具介绍(一) _&& Systrace生成的trace.html打开空白或者打不开的解决办法

    1.必须用Chrome打开 2.在mac电脑上,可能Chrome打开也是空白,解决办法是:在chrome地址栏中输入”chrome:tracing”,然后点击load按钮load你的trace.htm ...

  9. Android DDMS检测内存泄露

    Android DDMS检测内存泄露 DDMS是Android开发包中自带工具,可以测试app性能,用于发现内存问题. 1.环境搭建 参考之前发的Android测试环境搭建相关文章,这里不再复述: 2 ...

随机推荐

  1. SLAM for Dummies SLAM初学者教程 中文翻译 1到4章

    SLAM for Dummies  SLAM初学者教程A Tutorial Approach to Simultaneous Localization and Mapping  一本关于实时定位及绘图 ...

  2. Spark Core(二)Driver上的Task的生成、分配、调度(转载)

    1. 什么是Task? 在前面的章节里描述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Worke ...

  3. [css]浮动-清除浮动的3种方法

    清除浮动的方法: 内墙法 注: 这是个奇淫技巧,没什么原理可言,记住即可 这个技巧又使得父box重新可以被子box撑开高度了. 隔墙法-适用于2个box之间上下排列 由于2个box高度依旧是0, 彼此 ...

  4. samba文件共享服务配置一(共2节)

    一.samba服务简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上 ...

  5. Redis 资料整理

    Redis is an open source, BSD licensed, advanced key-value store. Redis is often referred to as a dat ...

  6. 【MDCC 2015】开源选型之Android三大图片缓存原理、特性对比

    摘要:这是快的打车移动端架构师.Android 开源项目源码解析codeKK发起人 吴更新(@Trinea)在MDCC上分享的内容,从总体设计和原理上对几个图片缓存进行对比,没用到它们的朋友也可以了解 ...

  7. 文件读写网络IO简单了解,同步IO和异步IO

    在Linux中,对文件的读写其实就是IO. 与IO有关的名词:同步,异步,阻塞,非阻塞,甚至是同步阻塞,同步非阻塞,异步阻塞,异步非阻塞.别急,下面有举例IO分为两大种,同步和异步 同步IO:阻塞IO ...

  8. bzoj1623 / P2909 [USACO08OPEN]牛的车Cow Cars

    P2909 [USACO08OPEN]牛的车Cow Cars 显然的贪心. 按速度从小到大排序.然后找车最少的车道,查询是否能填充进去. #include<iostream> #inclu ...

  9. UVaLive4992:Jungle Outpost

    传送门 半平面交. 首先,由显然成立法可以证明炸连续的几个总比分散火力效果更佳. 所以二分答案,转化为判定问题,即间隔$ans$个点的连线的半平面交是否为空. 半平面交判定即可. 时间复杂度:$O(N ...

  10. 20145104张家明 《Java程序设计》第5周学习总结

    20145104张家明 <Java程序设计>第5周学习总结 教材学习内容总结 第八章(概括为一下内容) 1.如果父类异常对象在子类异常前被捕捉,则catch子类异常对象的区块将永远不会被执 ...