当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

深化Java调试体系: 第1部份,JPDA体系概览[Java编程]

赞助商链接



  本文“深化Java调试体系: 第1部份,JPDA体系概览[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

JPDA(Java Platform Debugger Architecture)是 Java 平台调试体系构造的缩写,通过 JPDA 供应的 API,开辟人员可以便利机动的搭建 Java 调试利用程序. JPDA 主要由三个部份构成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI),本系列将会具体介绍这三个模块的内部细节、通过实例为读者揭开 JPDA 的面纱.本文是该系列的第一篇,将会侧重从整体上介绍 JPDA 的各个构成,阐述它们彼此之间的内涵关联.

JPDA 概述

全部的程序员城市碰到 bug,关于运行态的错误,我们常常需求一些办法来察看和测试运行态中的环境.在 Java 程序中,最简单的,您能否尝试过利用 System.out.println() 来输出您的 Java 程序的履行中的各种变量状况来发现您的 Java 程序运行时的问题?这种方法便利易用,在一些简单的情形下可以办理您的问题,但是假如当您的程序运行在远程环境上,大概当前环境不答应掌握台终端输出(比方,考虑一下虚拟机初始化之时),您无法获得终端输出的时刻呢?大概,假如您根本无法本地改正运行您的程序?

无须耽忧,您可以通过很多的调试工具来帮忙您办理这个问题,常见的 IDE 都附带一个非常直观简单的调试工具,比方 Eclipse(图 1)就供应一个功效非常全面,操作非常简单的调试器.

图 1. 利用 Eclipse 调试 Java 程序

其他的一些常见的 Java IDE,比方 Netbeans 和 IntelliJ 等等也都供应了近似的功效,您乃至能不用 IDE 供应的图形界面,利用 JDK 自带的 jdb 工具,以文本号令的情势来调试您的 Java 程序.这些形形色色的调试器都支持本地和远程的程序调试,那么它们是若何被开辟的?它们之间存在着什么样的接洽呢?我们不得不说起 Java 的调试体系—— JPDA .

我们知道,Java 程序都是运行在 Java 虚拟机上的,我们要调试 Java 程序,事实上就需求向 Java 虚拟机恳求当前运行态的状况,并对虚拟机发出一定的指令,设置一些回调等等,那么 Java 的调试体系,就是虚拟机的一整套用于调试的工具和接口.

关于 Java 虚拟机接口熟习的人来说,您一定还记得 Java 供应了两个接口体系,JVMPI(Java Virtual Machine Profiler Interface)和 JVMDI(Java Virtual Machine Debug Interface),而它们,以及在 Java SE 5 中预备替换它们的 JVMTI(Java Virtual Machine Tool Interface),都是 Java 平台调试体系(Java Platform Debugger Architecture,JPDA)的重要构成部份. Java SE 自 1.2.2 版就开始推出 Java 平台调试体系构造(JPDA)工具集,而从 JDK 1.3.x 开始,Java SDK 就供应了对 Java 平台调试体系构造的直接支持.顾名思义,这个体系为开辟人员供应了一整套用于调试 Java 程序的 API,是一套用于开辟 Java 调试工具的接口和协议.本质上说,它是我们通向虚拟机,观察虚拟机运行态的一个通道,一套工具.理解这一点关于学习 JPDA 非常重要.

换句话说,通过 JPDA 这套接口,我们便可以开辟自己的调试工具.通过这些 JPDA 供应的接口和协议,调试器开辟人员就可以按照特定开辟者的需求,扩大定制 Java 调试利用程序,开辟出吸引开辟人员利用的调试工具.前面我们提到的 IDE 调试工具都是基于 JPDA 体系开辟的,辨别仅仅在于它们大概供应了差别的图形界面、具有一些差别的自定义功效.别的,我们要注意的是,JPDA 是一套尺度,任何的 JDK 实现都必须完成这个尺度,因此,通过 JPDA 开辟出来的调试工具先天具有跨平台、不依靠虚拟机实现、JDK 版本无关等移植长处,因此大部份的调试工具都是基于这个体系的.

JPDA 构成模块

JPDA 定义了一个完好独立的体系,它由三个相对独立的层次共同构成,并且规定了它们三者之间的交互方法,大概说定义了它们通信的接口.这三个条来由低到高辨别是 Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP)以及 Java 调试接口(JDI).这三个模块把调试历程分化成几个很自然的概念:调试者(debugger)和被调试者(debuggee),以及他们中间的通信器.被调试者运行于我们想调试的 Java 虚拟机之上,它可以通过 JVMTI 这个尺度接口,监控当前虚拟机的信息;调试者定义了用户可以利用的调试接口,通过这些接口,用户可以对被调试虚拟机发送调试号令,同时调试者承受并显示调试后果.在调试者和被调试着之间,调试号令和调试后果,都是通过 JDWP 的通讯协议传输的.全部的号令被封装成 JDWP 号令包,通过传输层发送给被调试者,被调试者接纳到 JDWP 号令包后,解析这个号令并转化为 JVMTI 的调用,在被调试者上运行.近似的,JVMTI 的运行后果,被格局化成 JDWP 数据包,发送给调试者并返回给 JDI 调用.而调试器开辟人员就是通过 JDI 得到数据,发出指令.图 2 展示了这个历程:

图 2. JPDA 模块层次


  以上是“深化Java调试体系: 第1部份,JPDA体系概览[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 深化Java调试体系: 第1部份,JPDA体系概览
  • 深化Java调试体系,第2部份: JVMTI和Agent实现
  • <b>深化Java策划管理器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .