DDMS

DDMS提供port-forwarding服务。

 

DDMS如何工作?

DDMS作为中间人,直接连接IDE和在device上运行的程序,android的每一个应用都在在即的线程中运行,每一个县城都有自己的vm, 每个vm都在一个特定的端口监听degugger.

 

启动时,DDMS连接adb, 并在两者之间开始device monitoring service, 这个service 会告诉ddms什么时候一个device连接上了。如果连接上了,DDMS和adb之间有启动一个vm monitoring serivce, 这个service会告知DDMS在device上运行的vm什么时候开始或关闭。一旦当vm开始运行, DDMS通过adb获得这个vm的process ID, 并通过device上的adb daemon打开一个连接在vm's debugger. 这样DDMS可以跟vm's debugger连接。

 

对device上的每一个vm,DDMS为它打开一个port来监听debugger,当debugger连到任意一个port上时,所有的数据直接在debugger和vm键传输。

 

DDMS同时也打开另一个local port, DDMS base port(by default 8700). DDMS在8700上也监听debugger,当一个debugger 连接上base port 时,debugger 和当前在DDMS上被选中的vm链接。

 

DDMS左侧的pane显示连接中的device,如果有?表示ddms从adb收到process ID后,没能与那个vm连接上,try restart ddms.

右侧的pane, threads: list of threads running in the process of target vm.

                                   id: vm给的unique thread id.

                                   tid: linux thread id, 主线程id与process id 相同。

                                   status: vm thread status, daemon threads用*表示。

                  vm heap:显示此heap stats, 在gc时,updated heap stats.

                 allocation tracker, track memory allocation of each vitual machine, 在左侧选择vm, 点击vm tracking -> getAllocations. 看所有从开始后tracking allocations, 点击getallocation 来refresh.

 

                 File explorer, 在左上角执行pull a file from or push, delete.

 

在ddms中,还只能手动在tools下mount sdcard,  $mksdcard 128M ./img

你可能感兴趣的:(DDMS)