Java 调试技术 JPDA 架构解读

JVMTI 定义了 JVM 必须实现的一系列用于调试的接口,这些接口总体上包含:获取信息类的接口,例如获取当前堆内存的使用率某种动作,例如设置断点通知,例如当一个断点命中时,通知监听者自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
摘要由CSDN通过智能技术生成
  1. 通信方式(Transport)

连接器是指调试器与被调试 JVM 之间的一个连接,JPDA 在 JDI 这一层面实现了连接器。

通信方式是指调试器与被调试 JVM 之间的数据交换方式和通信报文格式,JPDA 在 JDWP 中定义了报文规范。

连接器

连接器有三种:

  1. Listening:调试器监听来自被调试 JVM 的连接;

  2. Attaching:调试器连接上一个已经处于运行状态的被调试 JVM;

  3. Launching:调试器直接亲手启动被调试 JVM,此时调试器与被调试代码实际上是运行在同一个 JVM 中的;

通信方式

调试器与被调试 JVM 之间的数据交换方式,有两种:

  1. 基于 Socket 网络连接,主要用于远程调试,即调试器和被调试 JVM 不在同一台机器上;

基于 Socket 的网络连接

  1. 基于操作系统共享内存的通信,主要用于调试器和被调试 JVM 在同一台机器上的情况;

基于共享内存的连接

配置

调试器和被调试 JVM 在启动的时候, 都需要通过设置 JVM 参数来让它具有调试的能力或者可被调试的能力。

对于 JDK5 及以上的版本,参数格式为:-agentlib:jdwp={子配置项}

对于 JDK5 以前的版本,参数格式为:-Xdebug 以及 -Xrunjdwp:{子配置项}

而子配置项,包括:

  1. transport:数据交换方式,可选:dt_socketdt_shmem,分别代表 socket 网络通信和共享内存通信

  2. Address:标识一个对端的地址,格式为:{ip}:{port}

  3. server:标识自己是调试者还是被调试者,调试者配置为:n,被调试着配置为:y

  4. suspend:只有被调试者才需要配这个参数,当配置为 y 的时候&

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值