JDWP通过ADB VS JDWP通过DDMS

时间:2013-11-12 10:42:44

标签: android debugging dalvik ddms

根据Android文档,每个DVM都有一个要连接的JDWP端口(不完全是JDWP协议,但实现了大多数JDWP功能)。因此,您可以使用ADB附加到它。

根据相同的文档,DDMS为每个DVM和一个JDWP基本端口(8700)提供一个JDWP。

我的问题是:两种选择的优点和缺点。

由于

1 个答案:

答案 0 :(得分:8)

设备上的每个可调试VM都与ADB建立了连接。 DDMS与ADB交谈以获取VM列表,然后使用ADB与它们通信。

DDMS侦听每个VM的单独TCP端口,因此您可以“直接”连接到设备上的任何VM。此外,为方便起见,它侦听端口8700,并将那里的任何连接路由到当前在UI中选择的任何VM。您可以使用Eclipse,IntelliJ,jdb,jswat等“调试远程VM”连接到该端口。

连接后,JDWP协议定义用于通信的基本数据包格式(即数据包类型和长度如何编码)。 DDMS扩展了JDWP,为其目的定义了一种新的数据包格式。 DDMS消息和调试器消息可以交错。

这里确实没有两种选择。调试器与DDMS通信,DDMS与ADB通信,ADB与VM通信。调试器和VM说JDWP,DDMS扩展了一点,因此可以共享相同的通信通道。

原始的DDMS设计文档可以在dalvik docs中找到。它有点过时了(并且由于某种原因,用斜体格式化)但基本细节没有改变。