java xrunjdwp_Java远程断点调式 -Xdebug

前言:

我们在开发的过程中,难免会遇到调用别人机器上的代码,或者测试服务器上的代码。再调用过程中,难免会用到断点调式的功能。但是运行的不是本地的代码怎么办呢?

现在我们就来了解下Java远程断点调用。

需要:

本地必须有源码,才能进行远程断点。

一. 服务端启动

#jdk1.7版本之前的命令

#java -agentlib:jdwp=transport=dt_socket,address=9092,server=y,suspend=y -jar xxx.jar

#1.7版本之后的命令

#1) java -agentlib:jdwp=transport=dt_socket,address=9092,server=y,suspend=y -jar xxx.jar

#2) java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9092-jar xxx.jar

我本地是jdk1.8,所以:

# nohup 末尾加&是后台运行 后边是日志输出路径

nohup java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,address=9092,suspend=y -jar xxx.jar 1>/home/project/applogs/xxx-standout.log 2>&1 &

参数说明:

# -Xdebug:通知JVM工作在debug模式下;

# -Xnoagent 禁用默认sun.tools.debug调试器。

# -Djava.compiler=NONE 禁止 JIT 编译器的加载。

# -Xrunjdwp:通知JVM使用(java debug wire protocol)来运行调试环境;加载JDWP的JPDA参考执行实例

# transport:监听Socket端口连接方式(也可以dt_shmem共享内存方式,但限于windows机器,并且服务提供端和调试端只能位于同一台机);

# server:server=y表示当前是调试服务端,=n表示当前是调试客户端

# suspend:suspend=n表示启动时不中断,一般用于设置主动连接;suspend=y表示启动时就进入调试模式,一般用于被动连接;

二. 客户端调用

用idea连接远程代码

1.

f99320ed9116b58705756691830afdf9.png

2.

a973888c3b63fd8611bccce648600f72.png

3.

d5ff28de5d46ab69d18276b9acb8b15f.png

4.启动remote,当 console 窗口中打印出 “Connected to the target VM, address: 127.0.0.1:9092', transport: 'socket'”即表示链接成功

然后就可以访问页面,再本地代码打断点了

注意:

1.服务端启动的时候,address=prot 这个端口号和程序端口,不是一样的。address这个端口号,必须要是没有在使用的。

2.服务端,不但要开放程序端口,而且要开放address端口。刚开始的时候,可以把防火墙关了练习。

3.客户端,调用的时候,调用的不是程序端口,而是address端口。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值