IntelliJ Idea 远程调试Java服务

1、背景

在很多情况下,服务端程序部署在远程,某部分逻辑出现问题时,不停地对代码修改,增加log查出问题根源。但是,有些服务启动时间较长、不断的打包、上传、测试会令人非常头疼。因此,可以使用远程调试的方式对远程部署的服务调试。

2、准备

  • idea IDE、远程服务源码
  • 远程服务
  • 测试客户端

3、部署图

由于是对源码进行调试,源码经编译后运行在远程服务器上,并且在本地Idea IDE中打开源码。在Idea连接上远程服务后,测试请求远程服务,在可以看到idea中设置的断点信息。
在这里插入图片描述

4、步骤

  • 4.1 远程服务tomcat/bin/catalina.sh中增加特定JVM参数
    在这里插入图片描述
    其中,
    -Xdebug是通知JVM工作在DEBUG模式下,
    -Xrunjdwp是通知JVM使用(java debug wire protocol)来运行调试环境。该参数同时了一系列的调试选项:
  1. transport指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台。
  2. server参数是指是否支持在server模式的VM中.
  3. onthrow指明,当产生该类型的Exception时,JVM就会中断下来,进行调式。该参数可选。
  4. launch指明,当JVM被中断下来时,执行的可执行程序。该参数可选
  5. suspend指明,是否在调试客户端建立起来后,再执行JVM。
  6. onuncaught(=y或n)指明出现uncaught exception 后,是否中断JVM的执行.
  7. address=8889为debug端口,idea需要连接此端口。
  • 4.2 idea连接远程服务
    按照下图的三个步骤进行操作,建立远程连接。
    在这里插入图片描述
    左上角+号添加remote
    在这里插入图片描述

  • 4.3 debug
    在远程服务启动后,点击下图中的debug(shift+F9)进行调试,并在代码中设置好断点。
    debug

  • 4.4 客户端请求
    从图中看到,当请求后,变量值不仅动态出现在代码后面,而且在底部也有相应的变量值。
    测试请求

5、备注

只有添加的断点中有对号时,才表示断点有效。
如果出现下图情况,可以看看是否是禁用了断点。
在这里插入图片描述
注意:需要在本机和服务器上建立端口映射!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值