DDMS介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DDMS介绍
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实例在运⾏。
五,右边⾯板
这⾥显⽰关于选中的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 开发 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 ,停⽌⼀个虚拟机。