Java调试平台

  
   Java Platform Debugger Architecture(JPDA:Java平台调试架构)--由Java虚拟机后端和调试平台前端组成,Java虚拟机提供了Java调试的功能,而调试平台通过调试交互协议向Java虚拟机请求服务以对在虚拟机中运行的程序进行调试。  
     
   JPDA通过两个接口和协议来完成如上的说明,分别是 JVMTI(Java虚拟机工具接口)、 JDWP(Java调试连线协议)和 JDI(Java调试接口)。

   JVMTI定义了虚拟机应该提供的调试服务,包括 调试信息(Information譬如栈信息)、 调试行为(Action譬如客户端设置一个断点)和 通知(Notification譬如到达某个断点时通知客户端),该接口由虚拟机实现者提供实现,并结合在虚拟机中。

   JDWP定义调试服务和调试器之间的通信,包括定义调试信息格式和调试请求机制;而JDI在语言的高层次上定义了调试者可以使用的调试接口以能方便地与远程的调试服务进行交互,Java语言实现,调试器实现者可直接使用该接口访问虚拟机调试服务。 

   JDI(Java Debug Interface)是 JPDA 三层模块中最高层的接口,定义了调试器(Debugger)所需要的一些调试接口。基于这些接口,调试器可以及时地了解目标虚拟机的状态,例如查看目标虚拟机上有哪些类和实例等。另外,调试者还可以控制目标虚拟机的执行,例如挂起和恢复目标虚拟机上的线程,设置断点等。
  
   目前,大多数的 JDI 实现都是通过 Java 语言编写的。比如,Java 开发者再熟悉不过的 Eclipse IDE,它的调试工具相信大家都使用过。它的两个插件 org.eclipse.jdt.debug.ui 和 org.eclipse.jdt.debug 与其强大的调试功能密切相关,其中 org.eclipse.jdt.debug.ui 是 Eclipse 调试工具界面的实现,而 org.eclipse.jdt.debug 则是 JDI 的一个完整实现。

  当虚拟机的调试服务运行时,虚拟机作为调试的服务提供端,监听一个连接,而调试器通过该连接与虚拟机进行交互。目前,Windows平台的JVM提供了两种方式的连接: 共享内存Socket连接

   共享内存的服务提供端和调试端只能位于同一台机。
  
   而Socket连接则支持不同异机调试,即远程调试。  



http://www.ibm.com/developerworks/cn/java/j-lo-jpda1/
http://www.ibm.com/developerworks/cn/java/j-lo-jpda2/index.html
http://www.ibm.com/developerworks/cn/java/j-lo-jpda3/index.html?ca=drs-cn-0903
https://www.ibm.com/developerworks/cn/java/j-lo-jpda4/

http://www.ibm.com/developerworks/cn/java/j-lo-jdi/


 

你可能感兴趣的:(java,eclipse,虚拟机,socket,IBM)