jpda java platform debugger architecture ,java平台调试体系。
jpda是一套标准,任何的jdk实现都必须完成这个标准。jpda定义了完整独立的体系,它由三个相对独立的层次共同组成,而且规定了三者的交互方式,也可以说是通信方法。
由底层到高层分别是 java虚拟机工具接口(JVMTI),java调试线协议(JDWP)以及java调试接口(JDI)。
三个模块把调试过程分成如下几个概念:
调试者debugger,被调试者debuggee,以及它们之间的通信器。
被调试者运行于我们想调试的 Java 虚拟机之上,它可以通过 JVMTI 这个标准接口,监控当前虚拟机的信息;调试者定义了用户可使用的调试接口,通过这些接口,用户可以对被调试虚拟机发送调试命令,同时调试者接受并显示调试结果。在调试者和被调试着之间,调试命令和调试结果,都是通过 JDWP 的通讯协议传输的。所有的命令被封装成 JDWP 命令包,通过传输层发送给被调试者,被调试者接收到 JDWP 命令包后,解析这个命令并转化为 JVMTI 的调用,在被调试者上运行。类似的,JVMTI 的运行结果,被格式化成 JDWP 数据包,发送给调试者并返回给 JDI 调用。而调试器开发人员就是通过 JDI 得到数据,发出指令。
debuggee 被调试者 JVMTI <———– 交互通道 、JDWP ———-> debugger 调试者 JNI
模块 | 层次 | 编程语言 | 作用 |
---|---|---|---|
VMTI | 底层 | C | 获取及控制当前虚拟机状态 |
JDWP | 中介层 | C | 定义 |
JDI | 高层 | Java | 提供 Java API 来远程控制被调试虚拟机 |