JDWP

简介:   JPDA(Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序。

 

 

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

 

目录
打赏
0
0
0
0
95
分享
相关文章
使用`dbus-monitor`命令深入了解DBus通信
`dbus-monitor`是Linux下用于观察DBus消息的命令行工具,有助于理解和调试应用程序间的通信。安装该工具可通过发行版的包管理器,如`apt-get`、`dnf`或`pacman`。基本用法是运行`dbus-monitor`监控系统总线,使用`--session`监控会话总线,配合过滤器如`sender`、`interface`等精细化查看特定消息。当面临DBus相关问题时,此工具能辅助排查和诊断。
【Java异常】ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 JDWP exit erro
【Java异常】ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 JDWP exit erro
401 0
使用JDB Debugger
使用JDB Debugger
124 0
Tomcat异常——ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
Tomcat异常——ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
1071 0
Tomcat异常——ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDB Debugger
JDB Debugger
89 0
IDEA 出现问题:JDWP Transport dt_socket failed to initialize, TRANSPORT_LOAD(509)解决方案(JAVA 小虚竹)
IDEA 出现问题:JDWP Transport dt_socket failed to initialize, TRANSPORT_LOAD(509)解决方案(JAVA 小虚竹)
876 0
IDEA 出现问题:JDWP Transport dt_socket failed to initialize, TRANSPORT_LOAD(509)解决方案(JAVA 小虚竹)
netcat 使用
1.前言 1.1声明 文章中的文字可能存在语法错误以及标点错误,请谅解; 如果在文章中发现代码错误或其它问题请告知,感谢! 2.netcat的使用 2.1netcat介绍 netccat是一个通过TCP/UDP在网络中进行读写数据工具(命令),被称为“瑞士军刀”,主要用于调试领域、传输领域甚至黑客攻击领域。
1477 0