`

JPDA:Java平台调试架构

阅读更多
  Java Platform Debugger Architecture(JPDA:Java平台调试架构) 由Java虚拟机后端和调试平台前端组成
  1.Java虚拟机提供了Java调试的功能
  2.调试平台通过调试交互协议向Java虚拟机请求服务以对在虚拟机中运行的程序进行调试

  JPDA的构架
  JPDA通过两个接口和协议来完成如上的说明,分别是JVMTI(Java虚拟机工具接口)、JDWP(Java调试连线协议)和JDI(Java调试接口)。
  1.JVMTI定义了虚拟机应该提供的调试服务,包括调试信息(Information譬如栈信息)、调试行为(Action譬如客户端设置一个断点)和通知(Notification譬如到达某个断点时通知客户端),该接口由虚拟机实现者提供实现,并结合在虚拟机中
    2.JDWP定义调试服务和调试器之间的通信,包括定义调试信息格式和调试请求机制
    3.JDI在语言的高层次上定义了调试者可以使用的调试接口以能方便地与远程的调试服务进行交互,Java语言实现,调试器实现者可直接使用该接口访问虚拟机调试服务。

  运行方式
  当虚拟机的调试服务运行时,虚拟机作为调试的服务提供端,监听一个连接,而调试器通过该连接与虚拟机进行交互。目前,Windows平台的JVM提供了两种方式的连接:共享内存和 Socket连接,共享内存的服务提供端和调试端只能位于同一台机,而Socket连接则支持不同异机调试,即远程调试。

  虚拟机参数设置
  1.启用调试服务
    -Xdebug 启用调试
    -Xrunjdwp:<sub-options> 加载JVM的JPDA参考实现库
  2.Xrunjdwp子参数(sub-options)配置
    Xrunjdwp子参数的配置格式如下
    -Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...

  几个例子
  -Xrunjdwp:transport=dt_socket,server=y,address=8000
  在8000端口监听Socket连接,挂起VM并且不加载运行主函数直到调试请求到达
  -Xrunjdwp:transport=dt_shmem,server=y,suspend=n
  选择一个可用的共享内存(因为没有指address)并监听该内存连接,同时加载运行主函数
  -Xrunjdwp:transport=dt_socket,address=myhost:8000
  连接到myhost:8000提供的调试服务(server=n,以调试客户端存在),挂起VM并且不加载运行主函数
  -Xrunjdwp:transport=dt_shmem,address=mysharedmemory
  通过共享内存的方式连接到调试服务,挂起VM并且不加载运行主函数
  -Xrunjdwp:transport=dt_socket,server=y,address=8000,
  onthrow=java.io.IOException,launch=/usr/local/bin/debugstub
  等待java.io.IOException被抛出,然后挂起VM并监听8000端口连接,在接到调试请求后以命令/usr/local/bin/debugstub dt_socket myhost:8000执行
  -Xrunjdwp:transport=dt_shmem,server=y,onuncaught=y,launch=d:\bin\debugstub.exe
  等待一个RuntimeException被抛出,然后挂起VM并监听一个可用的共享内存,在接到调试请求后以命令d:\bin\debugstub.exe dt_shmem <address>执行,<address>是可用的共享内存
分享到:
评论

相关推荐

    深入Java调试体系 第1部分,JPDA体系概览

    JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI),本系列将会详细介绍这三个模块的内部细节、通过实例为读者揭开 JPDA 的面纱。本文是该系列的第一篇...

    使用JPDA进行Java程序远程调试

    使用JPDA进行Java程序远程调试使用JPDA进行Java程序远程调试使用JPDA进行Java程序远程调试使用JPDA进行Java程序远程调试

    深入Java调试体系(JPDA-JDWP)

    JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI),本系列将会详细介绍这三个模块的内部细节、通过实例为读者揭开 JPDA 的面纱。

    Jylog:基于(JPDA)Java平台调试器体系结构的记录器-开源

    Jylog是基于(JPDA)Java平台调试器体系结构的记录器,Jylog消除了在程序中编写任何日志语句的需要。 可以使用Jylog swing GUI定义日志记录信息,并且Jylog在运行时从JVM中提取信息

    JPDA----java调试体系

    文档内详细介绍了java的调试体系--JPDA,包括其接口,以及一些与虚拟机相关的知识

    基于JPDA的Java软件性能测试.pdf

    基于JPDA的Java软件性能测试.pdf

    深入Java调试体系:第1部分,JPDA体系概览

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

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

    本文内容包括:Java程序的诊断和调试JVMTI的简介Agent的工作过程JVMTI的环境和错误处理JVMTI基本功能一个简单Agent实现结语下载参考资料JPDA(JavaPlatformDebuggerArchitecture)是Java平台调试体系结构的缩写。...

    matlab精度检验代码-JPDA:区分性联合概率MMD(DJP-MMD)的代码

    matlab精度检验代码联合概率分布适应(JPDA) 该存储库包含用于域自适应的简单但有效的区分联合概率MMD(DJP-MMD)的代码。 我们通过将其嵌入联合概率域适应(JPDA)框架来验证其性能。 下图显示了DJP-MMD和联合MMD...

    深入Java调试体系,第3部分:JDWP协议及实现

    JDWP协议介绍协议分析Packet的结构JDWP传输接口(JavaDebugWireProtocolTransportInterface)JDWP的命令实现机制JDWP的事件处理机制结语参考资料JPDA(JavaPlatformDebuggerArchitecture)是Java平台调试体系结构的...

    远程调试jpda.docx

    项目放到linux服务器了,服务器的环境或者数据可能和我们本地不一样,这个时候我们可能需要远程的断点进行调试,来查看请求过程中的各个变量的值。

    Matlab_JPDA.zip_JPDA matlab仿真_JPDA算法_jpda_jpda tracking_matlab j

    多目标跟踪JPDA算法实现,是学习JPDA算法的经典代码,建议下载下来看看。

    java查看sun包源码-remote-debug-example:Java远程debug示范例子

    然后填写远程服务器的开启JPDA(Java Platform Debugger Architecture)的端口号,只需要本地存在相同的代码即可。这样的使用场景非常多,比如本地启动代码真的特别的麻烦,有时候开发代码都是直接使用远程debug。 二...

    JPDA算法Matlab代码

    采用JPDA数据关联算法实现两个个匀速运动目标的点迹与航迹的关联。上传的为压缩文件,解压后有两个m文件,一个是Data_JPDAF.m,另一个是JPDAF.m。将两个文件放到Matlab的同一个目录下,直接运行文件Data_JPDAF.m即可...

    目标跟踪 jpda c++实现

    联合概率数据互联JPDA是数据关联算法之一,它的基本思想是:对应于观测数据落入跟踪门相交区域的情况,这些观测数据可能来源于多个目标。JPDA的目的在于计算观测数据与每一个目标之间的关联概率,且认为所有的有效...

    JPDA.zip_JPDA.M_JPDA算法_jpda_多目标跟踪_联合概率数据互联

    matlab简单实现多目标跟踪的JPDA算法,供初学者参考

Global site tag (gtag.js) - Google Analytics