idea remote实现原理资源

转:http://www.cnblogs.com/XuYankang/p/jpda.html

原理篇

核心是JPDA(Java Platform Debugger Architecture)框架。IBM有非常详细的介绍:

https://www.ibm.com/developerworks/cn/java/j-lo-jpda1/

https://www.ibm.com/developerworks/cn/java/j-lo-jpda2/

https://www.ibm.com/developerworks/cn/java/j-lo-jpda3/

https://www.ibm.com/developerworks/cn/java/j-lo-jpda4/

关键摘抄如下:

  1. JPDA是JVM的调试标准,任何JDK都必须实现。
  2. 调试Java程序,本质是向JVM请求当前状态。这需要对JVM发送一定指令,设置一定回调。
  3. JPDA的三个层次:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP)以及 Java 调试接口(JDI)。它们之间的角色图:

  1. JVMTI(Java Virtual Machine Tool Interface):通向JVM的native的接口,处于体系最底层。所有的调试功能都需要该接口提供。是debug和profiler的接口,是线程分析、监听和代码覆盖率检查的基础。会有个紧耦合的Agent来实现JVMTI。该Agent的加载时间是出于JVM初始化早期或者运行时加载(对应于上文中的suspend参数)。
  2. JDWP(Java Debug Wire Protocol):交互的通讯协议。定义了交互中的命令、回应数据和错误代码。不包含传输层具体实现。主要分为握手和应答两个阶段。
  3. JDI(Java Debug Interface):对JDWP进行解析,为JDWP提供队列、缓存等服务。分为数据模块,将虚拟机上的所有数据、状态映射为Java的数据对象;链接模块,调试器向虚拟机发起链接,以获得各种状态,分为主动和被动形式。事件请求和处理模块。
  4. 由于JVM神一般的存在,使得Java的运行是先天可控的,因此其调试程序的开发,也远容易与C++。
  5. 类似工具:Apache harmony

猜你喜欢

转载自blog.csdn.net/panxuying123/article/details/84892569