`
JavaCrazyer
  • 浏览: 3009034 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类

Eclipse远程调试(远程服务器端监听)

 
阅读更多

 

前提:远程服务器上运行的WEB项目class对应的源码与本地项目中必须保持一致

也就是远程tomcat部署的项目就是本机项目打包过去的,而本机项目没有发生变动

 

远程服务器端

服务器端配置eclipse调试器监听端口,有两种方式,任选其一

 

第一种方式:

环境变量

export JPDA_ADDRESS=9999

 

 启动tomcat

使用sh catalina.sh jpda start启动

注意:不要用startup.sh

 

通过这条命令启动tomcat,会监听JPDA_ADDRESS设置的端口,等待调试器连接。

如果不配置JPDA_ADDRESS,默认监听8000端口

 

 

第二种方式:

  配置$tomcat_home/bin/catalina.sh

加上如下一行

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

 

说明:server=y 是指目标应用程序作为服务监听将要连接的远程调试器(常用);

     suspend=y 是指目标VM将暂停,直到调试器应用程序进行连接(若需要调试启动错误,很有用);

     suspend=n 是指目标VM不暂停;

     address=9988 监听端口。

 

 

启动tomcat

 直接通过startup.sh启动即可

 

通过ps -aux|grep tomcat查看启动的tomcat进程,刚才配置的-Xdebug等选项出现在进程信息中,证明配置成功

 

本机调试端

调试器配置

 

在本地eclipse中点击debug按钮,选择Debug Configurations....,如下图

 

 


 

 

 

点击选项后,弹出一个窗口,双击左侧Remote Java Application,如下图


Name:自定义,任意名称

Project:本机eclipse中的WEB项目,与远端服务器上部署的WEB项目一致

Host:被调试的远端服务器ip

Port: 远端服务器中环境变量JPDA_ADDRESS的值

配置完成后点击Apply,随后点击Debugeclipse窗口右下角出现

 

这里ConnectionType我们选择的是Standard(Socket Attach)方式调试

 

 

等待这个进度条跑完,直到consle的红色按钮变成灰色,此时已经完成了服务器端调试准备

 

 


 

 测试调试

 源码打断点

在本机eclipse源码中找到一处要调试的地方,打上断点

比如,我在一处webserviceservice入口类中某一方法testAdd中加入断点

 


 

 

测试接口,进入断点

比如,我测试自己的WebService接口

 

       private static String endpoint = "http://123.125.114.144:8080/JavaUtils/services/TestService?wsdl";

      

       private static Call call  = null;

       @BeforeClass

       public static void init(){

              Service service = new Service();

              try {

                     call  = (Call) service.createCall();

                     call.setTargetEndpointAddress(endpoint);

              } catch (ServiceException e) {

                     e.printStackTrace();

              }

       }

 

 

    @Test

       public void testRemoteDebug(){

              String method = "testAdd";

              // 调用远程方法

              try {

                     String value = "testValue"

                     Object ret = call.invoke(

                                   method,

                                   new Object[] {value);

                     System.out.println(ret.toString());

              } catch (AxisFault e) {

 

                     System.err.println(e.getFaultString());

 

              }

       }

 

执行单元测试,调用服务器端WebService服务的testAdd方法,传入value

此时eclipse进入debug状态,跳到刚才打断点的51行,

 

这样就可以像本机一样F6F5进行跟踪和调试远程程序了

 

 

注意:服务器端配置的环境变量JPDA_ADDRESS虽然是端口,但是只是调试器监听端口,但是与tomcat中部署项目运行的端口是不一样的,web项目运行端口是在tomcat_home/conf/server.xml中进行配置的<Connector port="8080" ....>,不要混淆

 

 

至此完整的eclipse远程调试步骤已经描述清楚

 

总结

Standard(Socket Attach)方式进行服务器端监听的优缺点:

先启动远程java程序 然后 启动Eclipse远程调试,然后可以正常调试系统

缺点 :只有java程序启动后才能进行调试,无法调试java程序的启动过程,如果要全程调试需要使用另外一种方式,我会总结成另一篇文章

优点 :可以随时连接到远程java程序进行调试

 

PS:这种调试方式最常用的

 

  • 大小: 35.8 KB
  • 大小: 127.8 KB
  • 大小: 3.6 KB
  • 大小: 2.4 KB
  • 大小: 6.5 KB
  • 大小: 20.2 KB
6
10
分享到:
评论
4 楼 gaocegege 2014-08-08  
请问可以转载么~
3 楼 zpz112358 2013-01-15  
2 楼 JavaCrazyer 2012-12-31  
Durian 写道
最佳应用场所是客户现场的的生产机。

说的对,呵呵
1 楼 Durian 2012-12-31  
最佳应用场所是客户现场的的生产机。

相关推荐

    NC eclipse 远程调试

    在使用 NC Eclipse 远程调试时,我们需要在服务器端和客户端配置相应的参数。服务器端需要配置 JVM 参数,客户端需要配置 Eclipse 的调试参数。 服务器端配置: 在服务器端,我们需要添加以下 JVM 参数,以便启用...

    使用Eclipse远程调试Linux服务器Tomcat项目

    "使用Eclipse远程调试Linux服务器Tomcat项目" 一、概述 在开发Java Web应用程序时,需要在远程服务器上进行调试,以便更好地了解程序的执行过程。使用Eclipse远程调试Linux服务器Tomcat项目可以帮助开发者更好地...

    Eclipse 远程调试Tomcat的应用

    ### Eclipse远程调试Tomcat应用详解 #### 一、前言 在软件开发过程中,调试是不可或缺的一环,尤其是在复杂的分布式系统或服务器端应用中。Eclipse作为一款功能强大的集成开发环境(IDE),提供了丰富的工具来支持...

    IDEA,Eclipse远程调试应用

    Eclipse远程调试项目配置 #### 3.1 选择项目右键选择Debug as 在Eclipse中,右键点击需要远程调试的项目,选择Debug as -&gt; Remote Java Application。 #### 3.2 选择Remote Java Application Eclipse会自动尝试...

    eclipse远程调试tomcat

    ### Eclipse远程调试Tomcat知识点详解 #### 一、概述 在软件开发过程中,尤其是在Web应用开发领域,远程调试是一项非常重要的技术。它可以帮助开发者在不同的环境中(如远程服务器)调试应用程序,这对于查找和...

    springboot远程调试(eclipse篇)

    ### Spring Boot 远程调试(Eclipse篇) #### 背景介绍 Spring Boot 是一个基于 Spring 框架的快速应用开发框架,它简化了 Spring 应用的初始搭建以及开发过程。在开发过程中,远程调试是一项非常重要的功能,尤其...

    远程调试方法参数配置

    远程调试是指通过网络连接,在本地计算机上控制并调试运行在远程服务器上的程序。这种方式使得开发者可以在不同的物理位置进行代码调试,而无需直接访问远程服务器。这对于提高开发效率、节省资源以及支持分布式团队...

    Java远程调试

    2. **配置调试参数**:在创建的远程调试项目中,指定远程服务器的地址和之前配置的监听端口(本例中为8818),并确保网络连接畅通无阻。 3. **设置断点**:完成配置后,即可在IDE中设置断点,进行代码级别的调试。 ...

    在Tomcat和Eclipse进行远程调试的配置

    此时,Tomcat会监听指定端口以等待远程调试连接。 4. **开始调试** 在Eclipse中点击“Debug”按钮开始调试。当程序执行到断点时,Eclipse将自动暂停并显示相关信息。 ### 非Windows系统下配置远程调试 1. **...

    Tomcat下配置远程调试

    其中`address=*:9000`与服务器端设置一致,确保使用相同的端口。 5. **运行配置**:最后点击`Run`按钮启动调试会话。 #### 五、注意事项 - **防火墙设置**:如果服务器和客户端不在同一局域网内,可能需要配置...

    服务器远程调试debug代码示例

    在IT行业中,远程调试是一种非常重要的技能,尤其是在大型分布式系统或者服务器端开发中。它允许开发者在本地机器上控制远端服务器上的程序,以便在实际运行环境中定位和解决问题。本示例将详细介绍如何进行服务器...

    使用eclipse远程debug .

    Eclipse远程Debug功能允许开发者对运行在另一台机器上的应用程序进行调试,这对于分布式系统或者服务器端应用的调试尤其有用。 首先,我们需要确保Eclipse安装了Remote System Explorer (RSE)插件,因为这是远程...

    PHP,JAVA远程调试

    然后在本地IDE(如IntelliJ IDEA或Eclipse)中创建远程调试配置,输入服务器的IP和之前设置的端口号。这样,当服务器上的JAVA应用运行时,你就可以在本地IDE中设置断点,实时查看变量值,跟踪调用栈等。 在实际操作...

    Elipse远程调试

    **标题:“Eclipse远程调试”** 在软件开发过程中,调试是不可或缺的一环,尤其是在大型项目中,远程调试能够帮助开发者高效地定位并解决问题。Eclipse作为一款强大的Java集成开发环境,提供了远程调试的功能,允许...

    Jboss远程调试配置文档

    ### JBoss远程调试配置详解 #### 一、引言 JBoss AS(Application Server)是Red Hat提供的一个开源Java应用服务器,广泛应用于企业级应用程序的开发与部署。在实际开发过程中,为了更高效地定位问题并解决问题,...

    JAVA远程调试.txt

    - 配置“Name”字段为此次调试的名称,“Project”选择需要调试的项目,“Host”填写远程服务器的IP地址,“Port”填写刚才设置的监听端口(默认8787)。 - 勾选“Allow termination of remote VM”选项,确保调试...

    远程调试jpda.docx

    通过访问服务的URL,断点将在服务器端被触发,从而可以在本地Eclipse中查看和调试远程服务器上的代码变量值。 值得注意的是,虽然示例中使用的是Tomcat 5.5.17,但许多其他服务器也提供了类似的远程调试接口。不同...

    weblogic远程debug

    这通常涉及到设置服务器端的Debug端口,并在IDE(如Eclipse或IntelliJ IDEA)中配置相应的Debug连接。 1. **开启WebLogic Server的远程Debug** - 打开`setDomainEnv.sh`配置文件(在Windows系统中是`setDomainEnv...

    tomcat远程debug

    远程调试的好处在于,开发者可以在本地IDE环境中对远端服务器上的应用进行调试,无需频繁地在本地和服务器之间上传部署。这极大地提高了开发效率,特别是在处理线上问题时,能够快速定位并解决问题。 在实际调试...

    有关计算机专业的外文翻译3

    ### 计算机专业知识点:远程调试Java应用与Eclipse #### 核心知识点解析: 在计算机科学领域,特别是软件开发中,**远程调试**(Remote Debugging)是一种关键技术,它允许开发者在不同的物理位置上对运行中的应用...

Global site tag (gtag.js) - Google Analytics