使用IDEA远程Debug调试(详细)

本文介绍了Java远程调试的概念、实现方式,包括IDEA中的配置步骤、不同JDK版本的参数设置,以及其优劣势。重点讲解了如何在物理机部署中开启服务端远程通道和客户端连接过程。
摘要由CSDN通过智能技术生成

一:前言

  记得刚工作那会写代码,遇到线上奇怪问题时,就会在可能出现问题的地方大量打log,然后重新打包部署,再对打印的log进行分析;往往这一套流程下来,基本上1个小时左右的时间就这么白白浪费,但要log打的不合理,那么就嘿嘿了,我们要不停的修改代码打log、不停的打包部署。这是何等的浪费时间呀。

1:什么是远程调试

  远程调试(对应IDEA功能:Remote JVM Debug)。远程调试使开发人员能够直接诊断服务器或其它线上进程上的问题,它提供了跟踪线上运行时错误并确定性能瓶颈和问题根源的方法,让你能够像在本地调试一样 Debug 远程服务器。

Ⅰ:Java的远程调试机制:
    Java虚拟机提供了远程调试机制,只需要在服务端启动时通过添加JVM参数开启调试服务端口,并且在
    客户端使用调试器连接到这个服务端口,就可以实现对远程JVM上程序的调试。
Ⅱ:IntelliJ IDEA远程调试的实现方式:
    IDEA利用Java的远程调试机制,在目标JVM上启用调试服务端口,并在IDEA上创建远程调试配置,连接
    到目标JVM上的调试服务端口,实现对远程程序的调试和控制。
Ⅲ:远程调试协议:
    在远程调试时,客户端和服务端之间通过远程调试协议进行通信。客户端会发送调试命令和断点信息到
    服务端口,服务端会执行调试命令并返回相应的结果,通过协议来实现客户端与服务端的交互。
Ⅳ:远程调试的工作原理:
    远程调试流程包括以下步骤:
        ①:启动远程 JVM 并配置调试服务端口;
        ②:在客户端创建远程调试配置,并连接到目标 JVM 上的调试服务端口;
        ③:在客户端设置断点和调试命令,并通过远程调试协议发送到服务端口;
        ④:服务端接收到命令后执行,并返回结果;
        ⑤:客户端收到结果后,根据调试命令和状态更新调试器界面。
Ⅴ:远程调试的优劣势:
    优势:可以直接在目标环境上调试代码,同时也可避免因操作系统等差异导致的问题;
    劣势:需要在目标环境上(服务端)开启调试服务端口,同时还需要在客户端设置调试器进行连接,非
    常繁琐。

二:使用远程调试(物理机部署)

1:服务端添加远程通道

要让远程服务器运行的代码支持远程调试,则服务端启动的时候必须加上特定的 JVM 参数,这些参数是:
    不同的JDK版本需要设置不同的配置:
        JDK 9 or later
            -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:9999
        JDK 5-8
            -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999
        JDK 1.4.x
            -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999
        JDK 1.3.x or earlier
            -Xnoagent -Djava.compiler=NONE -Xdebug
            -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999

这里的9999则是服务端开放的端口,后期客户端IDEA需要连接当前端口进行远程交互和调试。
但是我们需要注意的是,这个9999端口在服务端一定要放开防火墙或者安全组;
具体端口看项目需求;运行服务端jar包程序则如下(JDK 5-8版本):
    java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999 
    ./SwaggerDemo-0.0.1-SNAPSHOT.jar > app.log &

2:客户端连接远程通道

  设置Edit Configurations来配置信息

  注:远程代码和本地代码一定要一致,否则打断点会打偏或者压根无法打断点,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值