Java调试体系,就是虚拟机的一整套用于调试的工具和接口。通过JDPA提供的API,开发人员可以方便灵活的搭建Java调试工具。
JPDA组成模块
- JVMTI(Java虚拟机工具接口)
- JDWP(Java调试线协议)
- JDI(Java调试接口)
JVMTI
JVMTI定义了虚拟机应该提供的调试服务,包括调试信息(Information譬如栈信息)、调试行为(Action譬如客户端设置一个断点)和通知(Notification譬如到达某个断点时通知客户端),该接口由虚拟机实现者提供实现,并结合在虚拟机中 。
JDWP
Java调试线协议,是一个为Java调试而制定的通讯交互协议,它定义了调试器和被调试程序之间传递信息的格式。JDWP详细完整地定义了请求命令、响应数据和错误代码,保证了调试器和被调试程序间JVMTI和JDI的通信通畅。 需要注意的是,JDWP本身并不包括传输层的实现,JDWP只包括了和传输层交互的定义。
JDI
Java调试接口,是三个模块中最高层的接口,由Java语言实现。 JDI为开发人员提供了若干接口,不仅能格式化JDWP数据,而且还能为JDWP数据传输提供队列、缓存等优化服务。通过它,开发人员就能远程操控后端虚拟机上被调试程序的运行。我们一般的调试器也都是通过JDI接口构造出一套界面化的工具,达到易用的目的。