eclipse 远程调试java_Eclipse远程调试Java代码的三种方法

Eclipse远程调试Java代码的三种方法,

第1种方法是用来调试已经启动的Java程序,Eclipse可以随时连接到远程Java程序进行调试,

第2种方法可以调试Java程序启动过程,但是Eclipse不能随时连接到远程Java程序进行调试,

第3种方法可以同时具备上面两种的优点,在调试Java程序启动过程后,

即使断开后Eclipse还是可以随时连接到远程Java程序进行调试。

在实际使用过程,一般使用第1种调试方法,

在需要调试Java程序启动过程的时候,才会使用第3种方法,

第3种和第1种方法的区别只是在于suspend=y/n,

第2种方法一般很少使用。

1.Java程序开启远程Debug

在程序的JVM启动参数加入如下Debug参数:

-Xdebug -Xrunjdwp:transport=dt_socket,address=1088,server=y,suspend=n

参数说明:

-Xdebug 启用调试

-Xrunjdwp 加载JDWP的JPDA参考执行实例

transport 用于在调试程序和JVM使用的进程之间通讯

dt_socket 套接字传输

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

server=y/n JVM是否需要作为调试服务器执行

suspend=y/n 是否在调试客户端建立连接之后启动JVM 。

2.Eclipse远程调试Java代码的前2种方法

下面的图表示的是Eclipse调试的两种类型,

图片下半部分是第1种Socket Attach类型,表示远程程序正常运行,允许Eclipse调试器随时连接到JVM,

图片上半部分是第2种Socket Listen类型,表示Eclispe调试器先启动监听,JVM启动时主动连接调试器。

92201706e89971fa36b7fd8d2ddb4561.png

EclipseDebugType

2.1.第1种Socket Attach调试方法

远程JVM的Debug参数配置:

-Xdebug -Xrunjdwp:transport=dt_socket,address=1088,server=y,suspend=n

注意suspend=n,表示立即启动JVM,不等待调试客户端建立连接。

Eclipse调试器配置:

Eclipse -> Run -> Debug Configurations... -> Remote Java Application -> 右键点击New

打开一个默认名为New_configuration的调试配置界面,如下:

e8413a15b323f4f4809ac89b59f9be45.png

SocketAttach

Connection Type: Socket Attach

Host: localhost (远程Java程序所在的主机IP)

Port: 1088 (远程Java程序的调试端口)

点击Debug即可连接到已经启动的远程Java程序进行调试,

但是不能调试Java程序启动过程。

2.2.第2种Socket Listen调试方法

远程JVM的Debug参数配置:

-agentlib:jdwp=transport=dt_socket,suspend=y,address=192.168.0.1:1088

注意address需要填写Eclipse调试器所在的IP地址和Port端口。

Eclipse -> Run -> Debug Configurations... -> Remote Java Application -> 右键点击New

打开一个默认名为New_configuration的调试配置界面,如下:

e7f15a11b199e64782b2055253873bf3.png

SocketListen

Connection Type: Socket Listen

Port: 1088 (远程调试端口)

点击Debug先启动Eclipse监听,

然后启动远程JVM程序,会主动Eclipse调试器进行调试,

这种方法可以调试Java程序启动过程,

但是不能随时连接到远程java程序进行调试。

3.第三种调试方法

第三种调试方法和第1中调试方法类似,

区别在于远程JVM的Debug参数中suspend=y:

-Xdebug -Xrunjdwp:transport=dt_socket,address=1088,server=y,suspend=y

具体流程是先启动远程的Java程序,

但此时JVM不会真正启动,会等待调试客户端建立连接之后再启动JVM,

然后参考第一种方法启动Eclipse的Socket Attach类型调试器,

此时JVM会真正的启动,而且已经连接上Eclipse的调试器,

可以调试Java程序启动过程,而且即使断开后,

Eclipse还是可以随时连接到远程Java程序进行调试,

缺点在于必须启动Eclipse调试器监听,

否则会导致JVM程序无法启动一直在等待。

4.参考文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值