datax(24):远程调试datax

datax(24):远程调试datax一、datax开启远程debug1、环境本地:win10,idea专业版2020.3,datax3.0远程:CentOS6.5,datax3.02、效果3、步骤3.1远程开启debug/apps/datax/bin/datax.py/apps/datax/job/job.json-d即在后面添加-d即可,默认端口为9999,也可以自行修改datax.py文件第35行REMOTE_DEBUG_CONFIG=”-Xdebug-Xrunjdwp:transport=dt

大家好,又见面了,我是你们的朋友全栈君。

一、datax开启远程debug

1、环境

本地:
win10,idea专业版2020.3,datax3.0
远程:
CentOS6.5,datax3.0

2、效果

在这里插入图片描述

3、步骤

3.1 远程开启debug
/apps/datax/bin/datax.py /apps/datax/job/job.json -d

即在后面添加-d 即可,默认端口为9999,也可以自行修改datax.py文件第35行

 REMOTE_DEBUG_CONFIG = "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9999"
3.2 本地idea设置远程

在这里插入图片描述


二、远程debug原理

1、原理

Java远程调试的原理是两个VM之间通过debug协议进行通信,然后以达到远程调试的目的,两者之间可以通过socket进行通信;

我们知道,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 版本无关等移植优点,因此大部分的调试工具都是基于这个体系的。

  1. JPDA模块层次
    在这里插入图片描述
  2. JPDA层次比较

在这里插入图片描述

更加深入的介绍文档可以参见 https://developer.ibm.com/zh/articles/j-lo-jpda1/


2、idea 和eclipse的远程debug原理

客户端(idea 、eclipse 等)之所以可以进行调试,是由于客户端 和 服务端(程序端)进行了 socket 通信,通信过程如下:

1、先建立起了 socket 连接

2、将断点位置创建了断点事件通过 JDI 接口传给了 服务端(程序端)的 VM,VM 调用 suspend 将 VM 挂起

3、VM 挂起之后将客户端需要获取的 VM 信息返回给客户端,返回之后 VM resume 恢复其运行状态

4、客户端获取到 VM 返回的信息之后可以通过不同的方式展示给客户;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145600.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 什么是敏捷开发流程

    什么是敏捷开发流程这里是修真院后端小课堂,每篇分享文从【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】八个方面深度解析后端知识/技能,本篇分享的是:【什么是敏捷开发流程】这个词猛一听起来感觉很高大上,其实现在已经是主流的团队开发流程了。一.先说一下官方的定义:敏捷不是指某一种具体的方法论、过程或框架,而是一组价值观和原则。符合敏捷价值观…

    2022年6月15日
    32
  • Json交互处理_stata交互项检验

    Json交互处理_stata交互项检验Json交互处理JSON简介JSON(JavaScriptObjectNotation,JS对象标记)是一种轻量级的数据交换格式,目前使用特别广泛。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在JavaScript语言中,一切都是对象。因此,任何JavaScript支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等。看看他

    2022年10月15日
    1
  • 浙江省计算机专业的大专学校排名_浙江省内计算机大学专业

    浙江省计算机专业的大专学校排名_浙江省内计算机大学专业2015浙江省大学学科专业排名下面列出2015浙江省高校荣获2015年中国三星级学科专业以上的学科专业名单:1、浙江大学6星级学科专业(中国顶尖学科专业):农林经济管理、光学工程5星级学科专业(中国一流学科专业):管理科学与工程、电气工程、动力工程及工程热物理、控制科学与工程、软件工程、生态学、农业资源与环境、园艺学、植物保护、临床医学4星级学科专业(中国高水平学科专业):马克思主义理论、教育学、…

    2025年6月16日
    0
  • navicat 最新激活码-激活码分享

    (navicat 最新激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S32P…

    2022年3月26日
    631
  • 【解决】E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend)「建议收藏」

    【解决】E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend)「建议收藏」【解决】E:无法获取dpkg前端锁(/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?1常用两个方法https://blog.csdn.net/qq_38019633/article/details/840243092以上不行时候,用这种更新软件库sudoapt-getupdate继续进行安装解决…

    2022年10月6日
    0
  • 一个普通Android程序员的2018总结2019计划

    一个普通Android程序员的2018总结2019计划承接去年总结:一个普通Android程序员的20182018:总结这一年继续分三个方面吧:职场篇:这一年发生了很多事,上家公司团队经营问题,最终结果是团队解散,期间发生一系列事情,参照一个普通一个Android程序员的心酸历程(2018.5.1)。然后修整两个月,找到了现在这家公司,公司目前规模不大,但各方面管理和上家公司天壤之别,至少目前我工作过的公司里面,算是最好的了,工资不是很高,…

    2022年6月14日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号