java Debugjava学习与研究java

java debug 体系分析

2018-07-24  本文已影响39人  链人成长chainerup
nobug

      作为一个程序员,每天都会遇到问题、调试代码。常见的调试一般是加日志、打断点。在java中添加日志,每次都要编译,极其不便。java作为一门成熟的语言,怎么能没有成熟的机制?我们平时一般会用IDE自带的调试工具,eclipse、Intellij 等。本文将讲解一下java debug 体系的基础知识。


intellij

1 JPDA (Java platform debug Architecture)体系介绍

      我们在调试的过程中,一般需要一些方法来观察和测试运行态中的环境信息,比如变量、状态、jvm 状态、堆栈信息等。这些通过JPDA都可以搞到。

2 JPDA结构

JPDA结构

      JPDA定义了一个完整独立的体系,它由三个相对独立的层次共同组成,而且规定了三者之间的交互方式。这三个层次由低到高依次是Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP)以及 Java 调试接口(JDI)。这三个模块把调试过程分解成几个很自然的概念:调试者(debugger)和被调试者(debuggee),以及他们中间的通信器。

3 JPDA三层结构的交互

交互

基本交互可以分为如下步骤:

3.1、jvmti 相关的步骤

3.2、JDI相关的步骤

上述步骤主要描述了一下jvmti 相关的启动,下面讲一下JDI相关的步骤(以断点调试为例):

3.3、目标jvm的处理

4 总结

本文讲述了JPDA的概述,组成部分,重点讲述了组成部分之间的交互流程。后面的文章将展开讲述这几个组成部分。
本系列其他文章链接:
jvm启动流程图
jvmti agent的加载与回调函数的执行分析
java debug 体系-jdi
java debug 体系-jdwp
java debug 体系-JVMTI

参考文献

1、第 1 部分,JPDA 体系概览
2、JPDA#2:架构源码浅析
3、jvm启动流程图

上一篇下一篇

猜你喜欢

热点阅读