完整开启JVM远程调试

开启JVM远程调试很简单,在jar启动命令上添加参数:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<监听端口>

参数说明:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<监听端口>

transport:指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台;

address:调试服务器的端口号,客户端用来连接服务器的端口号;

server=y/n:当前JVM实例是否需要作为调试服务器执行,填y;

suspend=y/n:是否在调试客户端建立连接之后启动 VM,y的话vm启动时会挂起直到有一个客户端连接,填n;

完整Java启动命令示例:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:8002 -Xms256m -Xmx512m -XX:MetaspaceSize=256m -XX
:MaxMetaspaceSize=256m -jar xxx-1.0.0-release.jar

注意,这里address参数后面需要填 "0.0.0.0:8002",如果只配置了端口号没有指定ip,则JVM实例会拒绝外网的连接,这样你在本地使用idea等IDE就无法连接,也就无法远程调试!

检验jvm进程是否成功监听远程调试端口

检验的方式有很多,如 使用jinfo查询jvm的启动配置参数、使用arthas jvm打印jvm的信息等。

我这里使用netstat查看8002端口占用情况来判断:netstat -anp | grep 8002 ,打印结果:

后面的Java进程pid正是开启远程调试的jvm进程,说明开启成功。

另外,还可以在本地,windows环境可在CMD命令行窗口输入:

telnet yourip 8002

来尝试连接,可以正常连接则说明开启成功。

idea配置Java远程调试

Edit Configurations->Run/Debug Configurations->添加Remote JVM Debug,Host填入你的ip,远程调试端口,选择要调试的模块的classpath:

 选择刚才配置好的远程调试配置,点击debug 图标,连接远程jvm调试:

 

连接成功打印:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值