- 通信方式(Transport)
连接器是指调试器与被调试 JVM 之间的一个连接,JPDA 在 JDI 这一层面实现了连接器。
通信方式是指调试器与被调试 JVM 之间的数据交换方式和通信报文格式,JPDA 在 JDWP 中定义了报文规范。
连接器
连接器有三种:
-
Listening:调试器监听来自被调试 JVM 的连接;
-
Attaching:调试器连接上一个已经处于运行状态的被调试 JVM;
-
Launching:调试器直接亲手启动被调试 JVM,此时调试器与被调试代码实际上是运行在同一个 JVM 中的;
通信方式
调试器与被调试 JVM 之间的数据交换方式,有两种:
- 基于 Socket 网络连接,主要用于远程调试,即调试器和被调试 JVM 不在同一台机器上;
- 基于操作系统共享内存的通信,主要用于调试器和被调试 JVM 在同一台机器上的情况;
配置
调试器和被调试 JVM 在启动的时候, 都需要通过设置 JVM 参数来让它具有调试的能力或者可被调试的能力。
对于 JDK5 及以上的版本,参数格式为:-agentlib:jdwp={子配置项}
对于 JDK5 以前的版本,参数格式为:-Xdebug
以及 -Xrunjdwp:{子配置项}
。
而子配置项,包括:
-
transport:数据交换方式,可选:
dt_socket
和dt_shmem
,分别代表 socket 网络通信和共享内存通信 -
Address:标识一个对端的地址,格式为:
{ip}:{port}
-
server:标识自己是调试者还是被调试者,调试者配置为:
n
,被调试着配置为:y
-
suspend:只有被调试者才需要配这个参数,当配置为
y
的时候&