Android 通过ADB的JDWP与通过DDMS的JDWP

Android 通过ADB的JDWP与通过DDMS的JDWP,android,debugging,dalvik,ddms,Android,Debugging,Dalvik,Ddms,根据Android文档,每个DVM都有一个要连接的JDWP端口(不完全是JDWP协议,但实现了大部分JDWP功能)。因此,您可以使用ADB附加到它 根据相同的文档,DDM为每个DVM提供一个JDWP和一个JDWP基本端口(8700) 我的问题是:两种选择的利弊 谢谢设备上的每个可调试VM都连接到ADB。DDMS与ADB对话以获取虚拟机列表,然后使用ADB与它们对话 DDMS在单独的TCP端口上侦听每个VM,因此您可以“直接”连接到设备上的任何VM。此外,为了方便起见,它侦听端口8700,并将那里

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

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

我的问题是:两种选择的利弊


谢谢

设备上的每个可调试VM都连接到ADB。DDMS与ADB对话以获取虚拟机列表,然后使用ADB与它们对话

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

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

这里真的没有两种选择。调试器与DDMS对话,DDMS与ADB对话,ADB与VM对话。调试器和VM使用JDWP,DDMS扩展了JDWP,因此它可以共享相同的通信通道

原始DDMS设计文件可在中找到。它有点过时(出于某种原因,格式是斜体),但基本细节没有改变