当前位置: 首页 > news >正文

正规网站建设空间文化建设基金管理有限公司网站

正规网站建设空间,文化建设基金管理有限公司网站,网站的关于页面,制作图片海报的软件JDWP 的协议细节并通过实际调试中的例子展开揭示 JDWP 的实现机制,JDWP 是 Java Debug Wire Protocol 的缩写,它定义了调试器(debugger)和被调试的 Java 虚拟机(target vm)之间的通信协议。 JDWP 协议介绍 这里首先要说明一下 debugger 和 target vm。Target vm 中运行…

JDWP 的协议细节并通过实际调试中的例子展开揭示 JDWP 的实现机制,JDWP 是 Java Debug Wire Protocol 的缩写,它定义了调试器(debugger)和被调试的 Java 虚拟机(target vm)之间的通信协议。

JDWP 协议介绍

这里首先要说明一下 debugger 和 target vm。Target vm 中运行着我们希望要调试的程序,它与一般运行的 Java 虚拟机没有什么区别,只是在启动时加载了 Agent JDWP 从而具备了调试功能。而 debugger 就是我们熟知的调试器,它向运行中的 target vm 发送命令来获取 target vm 运行时的状态和控制 Java 程序的执行。Debugger 和 target vm 分别在各自的进程中运行,他们之间的通信协议就是 JDWP。

JDWP 与其他许多协议不同,它仅仅定义了数据传输的格式,但并没有指定具体的传输方式。这就意味着一个 JDWP 的实现可以不需要做任何修改就正常工作在不同的传输方式上(在 JDWP 传输接口中会做详细介绍)。

JDWP 是语言无关的。理论上我们可以选用任意语言实现 JDWP。然而我们注意到,在 JDWP 的两端分别是 target vm 和 debugger。Target vm 端,JDWP 模块必须以 Agent library 的形式在 Java 虚拟机启动时加载,并且它必须通过 Java 虚拟机提供的 JVMTI 接口实现各种 debug 的功能,所以必须使用 C/C++ 语言编写。而 debugger 端就没有这样的限制,可以使用任意语言编写,只要遵守 JDWP 规范即可。JDI(Java Debug Interface)就包含了一个 Java 的 JDWP debugger 端的实现(JDI 将在该系列的下一篇文章中介绍),JDK 中调试工具 jdb 也是使用 JDI 完成其调试功能的。

图 1. JDWP agent 在调试中扮演的角色

协议分析

JDWP 大致分为两个阶段:握手和应答。握手是在传输层连接建立完成后,做的第一件事:

Debugger 发送 14 bytes 的字符串 JDWP-Handshake 到 target Java 虚拟机

Target Java 虚拟机回复 JDWP-Handshake

图 2. JDWP 的握手协议

握手完成,debugger 就可以向 target Java 虚拟机发送命令了。JDWP 是通过命令(command)和回复(reply)进行通信的,这与 HTTP 有些相似。JDWP 本身是无状态的,因此对 command 出现的顺序并不受限制。

JDWP 有两种基本的包(packet)类型:命令包(command packet)和回复包(reply packet)。

Debugger 和 target Java 虚拟机都有可能发送 command packet。Debugger 通过发送 command packet 获取 target Java 虚拟机的信息以及控制程序的执行。Target Java 虚拟机通过发送 command packet 通知 debugger 某些事件的发生,如到达断点或是产生异常。

Reply packet 是用来回复 command packet 该命令是否执行成功,如果成功 reply packet 还有可能包含 command packet 请求的数据,比如当前的线程信息或者变量的值。从 target Java 虚拟机发送的事件消息是不需要回复的。

还有一点需要注意的是,JDWP 是异步的:command packet 的发送方不需要等待接收到 reply packet 就可以继续发送下一个 command packet。

Packet 的结构

Packet 分为包头(header)和数据(data)两部分组成。包头部分的结构和长度是固定,而数据部分的长度是可变的,具体内容视 packet 的内容而定。Command packet 和 reply packet 的包头长度相同,都是 11 个 bytes,这样更有利于传输层的抽象和实现。

Command packet 的 header 的结构 :

图 3. JDWP command packet 结构

Length 是整个 packet 的长度,包括 length 部分。因为包头的长度是固定的 11 bytes,所以如果一个 command packet 没有数据部分,则 length 的值就是 11。

  • Id 是一个唯一值,用来标记和识别 reply 所属的 command。Reply packet 与它所回复的 command packet 具有相同的 Id,异步的消息就是通过 Id 来配对识别的。
  • Flags 目前对于 command packet 值始终是 0。
  • Command Set 相当于一个 command 的分组,一些功能相近的 command 被分在同一个 Command Set 中。Command Set 的值被划分为 3 个部分:
  • 0-63: 从 debugger 发往 target Java 虚拟机的命令
http://www.yayakq.cn/news/21338/

相关文章:

  • python做网站用什么南通做网站软件
  • 这些网站涵盖了不同的主题和类型宁夏住房和城乡建设局网站
  • 做淘客网站用备案吗网站建设销售开场白
  • seo网站建设步骤大岭山镇网站建设公司
  • php网站建设原码抖音代运营公司经营范围
  • 黄村网站开发公司电话北京seo收费
  • 黄冈网站免费投放平台免费下载网站建设哪儿济南兴田德润什么活动
  • 网站下雪的效果怎么做的百度网站公司信息推广怎么做的
  • 怎么做国际网站首页鹿泉网站建设
  • 北京vi设计公司北京广告设计公司广丰网站seo
  • 做 理财网站有哪些问题漳州网站开发制作
  • K12网站怎么建设实时热搜榜榜单
  • 中国摄影在线网站oa系统有哪些功能
  • 中国水电建设集团网站北京公司模板网站好
  • dedecms手机网站制作wordpress更换网站域名
  • 国外网站建站app拉新任务平台
  • 郑州php网站建设网站模板破解下载
  • 网站地址栏图标制作自己怎么开网站
  • 玉田网站制作智能网站平台
  • 点击颜色更换网站主题商业网站需要多少钱
  • 国内专业网站制作公司企业网站定制设计
  • 深圳网站设计的公司专门做隐形眼镜的网站
  • 唐山网站设计制作营销策划方案ppt
  • 可以做网站二维码吗提升审美的网站
  • 中国建设银行网站首页签约上海网站商城建设
  • 百度网站建设中心网络营销解决方案
  • 网站建设内容大全免费做字体的网站
  • 邢台建站wordpress live2d
  • 旅游网站这么做wordpress调用当前分类列表
  • 做互联网公司网站谈单模拟视频教学龙岩酷搜网