博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JPDA 架构研究17 - JDI概览
阅读量:6389 次
发布时间:2019-06-23

本文共 1065 字,大约阅读时间需要 3 分钟。

引入:

前面用了很多篇幅来讨论JVMTI和JDWP部分,现在终于来看最靠近用户端部分了,JDI。

分析:

a. JDI的基础知识

和JVMTI和JDWP不一样的是,JDI提供了一组接口,这些接口是纯JAVA编写的。他们主要是给开发环境IDE用的,虽然调试器的实现可以直接利用JDWP或者JVMTI,但是多了这一层则可以从用户的代码级别来定义要发送的请求和获取的信息。

本质上,Eclipse的调试器与目标VM之间的双向通信如下:

调试器将用户的操作转化为调试命令,命令通过链接被发送到前端运行目标程序的虚拟机上;然后,目标虚拟机根据接受的命令做出相应的操作,将调试的结果发回给后端的调试器;最后,调试器可视化数据信息反馈给用户。

JDI接口定义在$JAVA_HOME/lib/tools.jar中,从宏观上看,它分为5个大包。

包名
描述
com.sun.jdi
这是JDI的核心包,它提供了镜像机制将目标虚拟机上的所有数据、类型、域、方法、事件、状态和资源,以及调试器发向目标虚拟机的事件请求等都映射成 Mirror 对象
com.sun.jdi.connect
该包用于定义JDI到目标虚拟机的连接
com.sun.jdi.connect.spi
该包用于定义开发TransportService(也就是前面我在JDWP层讨论很深的传输器服务)所需要的必要的类和接口。
com.sun.jdi.event
该包定义了JDI事件和事件处理
com.sun.jdi.request
该包用于发送JDI事件然后在一定条件下发送。

b.JDI的具体实现

以Eclipse为例:

org.eclipse.jdt.debug 是 JDI 的一个完整实现,而org.eclipse.jdt.debug.ui 是 Eclipse 调试工具界面的实现。从包名上看,我们大体上把JDI 分成三个部分:

(1)数据模块。它负责调试器(Debugger)和目标虚拟机上(Target VM)的数据建模。

(2)链接模块。它建立调试器(Debugger)与目标虚拟机(Target VM)的沟通渠道。

(3)事件请求与处理模块。它提供调试器(Debugger)与目标虚拟机(VM)之间的交互方式。

我们会在接下来的几篇文章中从Eclipse的代码级别来分析这些模块。

本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1587958,如需转载请自行联系原作者
你可能感兴趣的文章
2003迁移到 Server 2008
查看>>
配置安全的windows2003服务器
查看>>
Java基础知识回顾-6
查看>>
运维监控利器Nagios:概念、结构和功能
查看>>
Lync和Exchange 2013集成PART5:UCS和HD头像
查看>>
DPM2007轻松恢复Exchange邮件,DPM2007系列之三
查看>>
在Mybatis3开发中与配置相关的7点体会
查看>>
oracle 数据库开发应用实例,招生录取系统,oracle与plsql教程打包下载
查看>>
使用 Windows 命令行删除结果
查看>>
Spring Boot快速入门
查看>>
EqualLogic控制器算法研究一:基本管理
查看>>
《Pro ASP.NET MVC 3 Framework》学习笔记之十六【示例项目SportsStore】
查看>>
Java设计模式圣经连载(05)-代理模式
查看>>
摩卡业务服务管理(Mocha BSM)解决方案
查看>>
实战:将静态路由发布到动态路由
查看>>
Spring @Scheduled
查看>>
如何建设一个适配“百度轻舟计划”的移动站
查看>>
2016年IoT和新的逃逸技术将会引领威胁态势
查看>>
为什么数据挖掘很难成功?
查看>>
需求旺盛:市场提供大量机器学习与物联网相关岗位
查看>>