JDWP

 

 

JPDA(Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序。
JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI)。

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 完成其调试功能的。

 

http://www.ibm.com/developerworks/cn/java/j-lo-jpda3/index.html

http://blog.csdn.net/mike_caoyong/article/details/7943458

 

时间: 2024-12-04 19:00:26

JDWP的相关文章

Eclipse远程调试出现“JDWP Transport dt_socket failed to initialize”如何解决

工作中经常需要使用Eclipse远程连接Tomcat,调试Web应用程序. eclipse远程调试Tomcat方法 1.Linux中配置tomcat在catalina.sh中添加如下 CATALINA_OPTS="-Xdebug  -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"(不要换行,要在同一行) 2.Window中修改 catalina,bat文件,添加: Set  "CATALINA_OPT

[翻译]JDK 8 兼容性指南

翻译官方文档,删除部分可忽略. 译者:坤谷,井桐,激酶 兼容性是一个复杂的问题. 本文介绍了Java平台潜在的三种不兼容问题: 源码: 源码兼容性问题关注Java源代码转换成class文件是否兼容,包括代码是否仍然可编译. 二进制: 在Java语言规范中,二进制兼容性定义为:"类的改变是二进制兼容的(或者不破坏二进制兼容性),是指如果改变前的类的二进制在链接时没有错误,那么改变后的类在链接时仍然没有错误." 行为 : 行为兼容性包括在运行时执行的代码的语义. 欲了解更多信息,请参阅Op

tomcat启动报错-eclipse 启动 tomcat 异常

问题描述 eclipse 启动 tomcat 异常 tomcat: apache-tomcat-7.0.54-windows-x86 绿色版 eclipse: eclipse-jee-luna-R-win32 . eclipse-jee-indigo-SR2-win32 直接在 ${TOMCAT_HOME}/bin 下双击 startup.bat 可以正常启动,无任何问题, 但是在 eclipse 中配置好之后,加入web工程,启动tomcat,就出现了下面的错误信息: Error occurr

ovirt-engine安装

一.安装 1.更新系统 原来是centos4.5 #yum update 升级后到6.7版本. [root@localhost ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 2.新建用户 #adduser liuxiaoyan #passwd liuxiaoyan 3.安装snapshot库(root用户) [root@localhost ~]# yum -y install http://resources.ovirt.org/r

开发一个调试JSP的Eclipse插件

js 本文通过开发一个JSP 编辑器插件的示例,介绍了 Eclipse 中设置 JSP 断点的方法,以及如何远程调试 JSP.作为基础知识,本文的前两部分描述了 JAVA Debug 和 JSR-45 的基本原理. 环境要求: 本文的代码是在 Eclipse3.0.0,JDK1.4.2 和 Tomcat5.0.5 上测试过的. JAVA 调试框架(JPDA)简介 JPDA 是一个多层的调试框架,包括 JVMDI.JDWP.JDI 三个层次.JAVA 虚拟机提供了 JPDA 的实现.其开发工具作为

使用Eclipse远程调试Java应用程序

远程调试对应用程序开发十分有用.例如,为不能托管开发平台的低端机器开发程序,或 在专用的机器上(比如服务不能中断的 Web 服务器)调试程序.其他情况包括:运行在内存 小或 CUP 性能低的设备上的 Java 应用程序(比如移动设备),或者开发人员想要将应用程 序和开发环境分开,等等. 先决条件 启动配置类型 启动配置 保存一 组用于启动程序的属性.启动配置类型是一种可以在 Eclipse 平台上启动的独特程序. 如果您还没安装该程序,请下载 Eclipse V3.4(Ganymede).在 G

JVM TI学习(1) 如何中断weblogic中stuck thread

JPDA(Java Platform Debugger Architecture)是sun推出的一套工具接口,有了这些接口,debugger.profile工具可以attach到target JVM,进而可以监控.调试我们的程序.JPDA包括三部分:JVM TI, JDI, JDWP.TI可以使用native语言,通过调用jvmti.c提供的系列库函数,实现debug工作,而JDI是TI面向Java开发人员提供的高层开发接口.TI代替了早期的DI,每个版本都做了一定的功能增强.随着JDK的发展,

使用Java Debug Interface(JDI)调试多线程应用程序

多线程环境下的程序调试是让开发者头痛的问题.在 IDE 中通过添加断点的 方式调试程序,往往会因为停在某一条线程的某个断点上而错失了其他线程的执 行,线程之间的调度往往无法预期,并且会因为断点影响了实际的线程执行顺序 .因此,在调试多线程程序时,开发者往往会选择打印 Trace Log 的方式来帮 助调试. 使用 Log 来帮助调试的问题在于,开发者往往无法预期哪些关键点需要记录 ,于是在整个程序的调试过程中,需要不断的加入 Log 调用,编译生成可执行 程序并部署,这对于大尺寸的软件开发项目无

深入Java调试体系,第2部分: JVMTI和Agent实现

JPDA(Java Platform Debugger Architecture)是 Java 平台调试体系结构的缩写.通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序. JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI).Java 调试线协议(JDWP),以及 Java 调试接口(JDI).本系列将会详细介绍这三个模块的内部细节,并通过实例为读者揭开 JPDA 的面纱. 本系列的 第 1 部分 从整体上介绍 JPDA 的各个组成,以及它们彼此