文章 2022-02-16 来自:开发者社区

JPDA 架构研究15 - Agent利用环境指针访问VM(字段访问篇)

引入: 上文中我们已经探讨了Agent如何利用环境指针访问VM(对象级的操作),现在我们 讨论让Agent利用环境指针访问类的字段。 分类10:字段访问 a.GetFieldName.获取某类的某字段名字 jvmtiError GetFieldName(jvmtiEnv* env,          ...

文章 2022-02-16 来自:开发者社区

JPDA 架构研究20 - JDI的事件请求和处理模块

引入: 上文主要讲解了JDI的连接模块来建立Debugger到Target VM之间的连接,这里主要讲解事件请求和处理模块。它们都在com.sun.jdi.event和com.sun.jdi.request包中。 分析: Part 1:查看JDI中定义的事件类型 JDI中事件的接口叫Event .  1 2 3 4 public abstract interface&...

JPDA 架构研究20 - JDI的事件请求和处理模块
文章 2022-02-16 来自:开发者社区

JPDA 架构研究21 - JDI的Debugger的UI部分

引入: 前面揭示了JDI的Debugger如何建立连接,发送和处理请求,这里我们专注于人机交互部分,Debugger的UI,它主要负责如何把人发出的操作转为请求,以及把请求操作反映在调试器的界面上。 分析: 这个插件主要都定义在org.eclipse.jdt.debug.ui_<Version>.jar中的plugin.xml中,它提供了各种人机交互的插件功能。打的比方,我们看编辑.....

文章 2017-11-22 来自:开发者社区

JPDA 架构研究18 - JDI的Mirror机制

引入: 上篇文章从整体上来看待JDI协议,这里结合Eclipse的实现代码来讨论下JDI的Mirror机制。 分析: 镜像机制是将目标虚拟机上的所有数据、类型、域、方法、事件、状态和资源,以及调试器发向目标虚拟机的事件请求等都映射成 Mirror 对象。其思想和我们经常说的O/R Mapping一样,其主要思想就是把2个异构的系统中的事物统一起来。 Mirror接口是JDI规范中定义的主接口...

文章 2017-11-16 来自:开发者社区

JPDA 架构研究2 - JVMTI代理

引入: 我们先从JVMTI讲起。JVMTI的主要作用是提供一组接口来检测VM的状态和控制VM中运行的JAVA程序。JVMTI是个双向接口: JVMTI的客户端叫Agent,它会在VM发生变化时通过事件机制被通知到变化。 JVMTI的服务端是许多函数,它们会和VM实际打交道并把结果告知Agent. 实践: 我们这里先来看下Agent.  Agent的方法定义在哪里呢?它们定义在$JAVA_...

JPDA 架构研究2 - JVMTI代理
文章 2017-11-16 来自:开发者社区

JPDA 架构研究17 - JDI概览

引入: 前面用了很多篇幅来讨论JVMTI和JDWP部分,现在终于来看最靠近用户端部分了,JDI。 分析: a. JDI的基础知识 和JVMTI和JDWP不一样的是,JDI提供了一组接口,这些接口是纯JAVA编写的。他们主要是给开发环境IDE用的,虽然调试器的实现可以直接利用JDWP或者JVMTI,但是多了这一层则可以从用户的代码级别来定义要发送的请求和获取的信息。 本质上,Eclipse的...

文章 2017-11-16 来自:开发者社区

JPDA 架构研究22 - 总结

引入: 前面有几十篇文章从JPDA的各个层面深入剖析了这个协议的细节和其中的各个组成部分细节,现在到了我们总结的时候了。因为图比文字更直观,所以这里精心设计一组图来详细阐述这其中的整个奥秘。如果要对某些部分做特别关注,可以参见前面相关文章。 分析(还是分场景): 场景1: JVM加载阶段: 其中dt_mem只适合于windows平台。 场景2:建立连接阶段(分两种情况.): Scenar...

JPDA 架构研究22 - 总结
文章 2017-11-14 来自:开发者社区

JPDA 架构研究1- 整体架构

引入: 关于JPDA(Java Platform Debugger Architecture) 网上有很多讲解,例子。我也不重复发明轮子了,这组文章主要从实践的代码分析角度,仔细剖析这个平台的特点,以及这其中的一些问题澄清和误区。 实践: 如果我们从利用Java Remote Debug的功能来看待JPDA ,并且使用socket的通信方式的话,那么整个过程应该如下: 首先,你在要被调试的服务.....

文章 2017-11-14 来自:开发者社区

JPDA 架构研究4 - JDWP的传输器

引入: 上一篇文章主要分析JDWP层传输的数据包的格式,这篇文章我们主要关注于JDWP层是如何传输的。 分析: 传输的具体实现是根据各个JVM自己实现,但是他们有个共同点就是都是用C/C++实现的,并且都实现了jdwpTransport.h (和上篇一样的这个文件)。实现根据我们的知识可以得知是以dll文件(或者Unix平台下是so文件)的形式存在。因为我们从前面了解到,JDWP层有Agent.....

JPDA 架构研究4 - JDWP的传输器
文章 2017-11-08 来自:开发者社区

JPDA 架构研究3 - JDWP层的数据包

引入: 现在我们把目光转到JDWP层(它的全称是Java Debug Wire Protocol。从"Wire"这词就可以看出,它主要是起到"连线”的作用)。首先我们从JDWP层的数据包讲起。源码在JDK中很容易找到,它定义$JAVA_HOME/include/jdwpTransport.h&nbsp;头文件中。&nbsp; 分析: Part 1: 握手过程 (handshake ) 握手包发生在...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

金融级分布式架构

SOFAStack™(Scalable Open Financial Architecture Stack)是一套用于快速构建金融级分布式架构的中间件,也是在金融场景里锤炼出来的最佳实践。

+关注