使用Eclipse进行远程调试

本文介绍在不更改配置的情况下远程调试 Java 程序和 tomcat 程序。

远程调试Java程序

测试代码 HelloWorld.java

 

1package com.sunyzc;
2 
3public class HelloWorld {
4  public static void main(String[] args) {
5    System.out.println("Hello World1!");
6    System.out.println("Hello World2!");
7    System.out.println("Hello World3!");
8  }
9}

将以上代码打成jar包(remoteDebug.jar)上传到目标机器(远程或本地)。

 

要进行调试,必须将调试 JDWP 代理加载到应用程序的 JVM 中。从 Java 5.0 开始,可以用 -agentlib:jdwp 选项来完成加载。5.0 以前版本则使用 -Xdebug 和 -Xrunjdwp 选项(5.0 也支持 -Xdebug 和 -Xrunjdwp 选项,不过新的 -agentlib:jdwp 选项更加好用。因为 5.0 中的 JDWP 代理使用 JVMTI 接口连接 VM,而非旧的 JVMDI 接口)。你应该向 -agentlib:jdwp(Java 5.0中)或 -Xrunjdwp(Java 5.0以前版本) 参数提供子选项;两组可能的子选项相同。

1-agentlib:jdwp=[=],[=]... 或
2-Xrunjdwp:[=],[=]...

 

子选项参数说明:

  • transport:这里通常使用套接字传输器(dt_socket)。如果被调试者和调试器位于同一机器之中,且运行的是 Windows 系统,可以使用共享内存连接器(dt_schmem)。
  • server:如果值为 y,目标应用程序监听将要连接的调试器应用程序。否则,它将连接到特定地址上的调试器应用程序。
  • address:连接的传输地址。如果 server= n,将尝试连接到该地址上的调试器应用程序。否则将在这个端口监听连接。
  • suspend:如果值为 y,目标 VM 将暂停,直到调试器应用程序进行连接。

在目标机器上运行:

1java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 -jar remoteDebug.jar

windows下效果

1java -agentlib:jdwp=transport=dt_socket,server=y,address=8000 -jar remoteDebug.jar

windows下效果

 

此时目标机器处于等待调试状态,在 eclipse 中设置代码断点,然后在 Debug configurations 的 Remote Java Application 中添加一个启动配置,具体如下:

远程调试Java程序配置

 

连接类型(Connection Type)有两种,这两种连接器对应用程序调试没有影响,可以任意选择:

  • Socket Attach:连接套接字的连接器,目标 VM 将作为主机。
  • Socket Listen:监听套接字的连接器,Eclipse VM 将是与远程 Java 应用程序连接的主机。

 

点击 Debug 即进入调试模式:

远程调试Java程序效果

 

调试 eclipse 代码即见目标机器执行效果:

windows下目标机器调试执行效果

windows下目标机器调试执行效果

 

目标机器可能会报以下错误:

Failed to load Main-Class

是由于 remoteDebug.jar 中的 manifest.mf 文件里面没有指定 Main-Class,可在 manifest.mf 文件里添加内容:

1Main-Class: com.sunyzc.HelloWorld

也可在目标机器这样启动程序:

1java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 -classpath remoteDebug.jar com.sunyzc.HelloWorld 或
2java -agentlib:jdwp=transport=dt_socket,server=y,address=8000 -classpath remoteDebug.jar com.sunyzc.HelloWorld

 

远程调试tomcat程序

远程调试 tomcat 参照以下方式执行即可:

1%CATALINA_HOME%/bin/startup.bat (正常启动)
2%CATALINA_HOME%/bin/catalina.bat jpda start (远程调试)

启动tomcat以远程调试

 

eclipse 中同样设定断点,并在 Debug configurations 的 Remote Java Application 中添加启动配置。如以下示例,将断点设在用户登录时,当点击“登录”后 eclipse 即进入调试模式:

远程调试tomcat配置

调试中的web页面

远程调试tomcat的效果

 

 

转载于:https://www.cnblogs.com/yakun/articles/3589430.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值