远程调试Java程序

一、概述

Java的远程debug,可以在本地打断点,调试远程程序。方法是修改JAVA_OPTS参数,使用Eclipse或IDEA等工具调试。
远程调试有两种方式:

  • 主动连接调试:服务端配监控端口,IDE连接远程端口。
  • 被动连接调试:IDE设置监听端口,等远程连接本地端口。

注意本地和远程的代码要一致,另外注意打开防火墙需要用到的端口。

二、主动连接调试

1. 说明

远程服务需要使用配置启动脚本:

JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"

启动jar可以使用命令:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar  

参数说明:

  • Xdebug :通知JVM工作在DEBUG模式
  • Xrunjdwp:通知JVM使用Java debug wire protocol来运行调试程序
  • transport:连接方式使用socket。如果是本机也可以使用共享内存
  • server=y:当前调试服务端,值为n表示调试客户端
  • suspend=n:启动时不中断
  • address:监听的端口

注意jdk 版本不同时,命令会有所区别。

2. 操作步骤

2.2.1 IDEA 设置 remote configuration

在这里插入图片描述

Debugger mode 选择 Attach to remote JVM,
Transport设置 Socket
Host设置 服务端IP
把下面的Command line arguments for remote JVM复制下来用来启动服务器端程序。

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

注意根据实际情况,选择右侧的JDK版本。

在这里插入图片描述

2.2.2 服务器启动jar程序

## 参数必须在 -jar 之前
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar your.jar

启动java程序后日志会提示:

Listening for transport dt_socket at address: 5005

2.2.3 在idea设置断点并启动程序

在这里插入图片描述
这时就可以开发地在IDEA里远程调试Java程序啦。

在Eclipse里也可以方便地进行设置:
在这里插入图片描述

三、被动连接调试

一般用来调试远程程序无法启动的问题,类似上面配置,在IDEA里选择 Listen to remote JVM,其它可以参照界面设置。我暂时用不到它,就没有动手测试了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值