前提:远程服务器上运行的WEB项目class对应的源码与本地项目中必须保持一致
也就是远程tomcat部署的项目就是本机项目打包过去的,而本机项目没有发生变动
远程服务器端(Tomcat7)
服务器端配置eclipse调试器监听端口,有两种方式,任选其一
第一种方式:
环境变量
export JPDA_ADDRESS=9999
启动tomcat7
使用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,随后点击Debug,eclipse窗口右下角出现
这里ConnectionType我们选择的是Standard(Socket Attach)方式调试
等待这个进度条跑完,直到consle的红色按钮变成灰色,此时已经完成了服务器端调试准备
测试调试
源码打断点
在本机eclipse源码中找到一处要调试的地方,打上断点
比如,我在一处webservice的service入口类中某一方法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行,
这样就可以像本机一样F6,F5进行跟踪和调试远程程序了
注意:服务器端配置的环境变量JPDA_ADDRESS虽然是端口,但是只是调试器监听端口,但是与tomcat中部署项目运行的端口是不一样的,web项目运行端口是在tomcat_home/conf/server.xml中进行配置的,不要混淆
至此完整的eclipse远程调试步骤已经描述清楚
总结
Standard(Socket Attach)方式进行服务器端监听的优缺点:
先启动远程java程序 然后 启动Eclipse远程调试,然后可以正常调试系统
缺点 :只有java程序启动后才能进行调试,无法调试java程序的启动过程,如果要全程调试需要使用另外一种方式,我会总结成另一篇文章
优点 :可以随时连接到远程java程序进行调试
可上ibm developer 网站上看看http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/
PS:这种调试方式最常用的
相关推荐
Eclipse远程调试教程 Eclipse 远程调试是指在 Eclipse 中对 Java 应用程序进行远程调试,通过配置 Tomcat 和 Eclipse,可以实现对远程服务器上的 Java 应用程序的调试。下面将详细介绍 Eclipse 远程调试的配置和...
标题 "Eclipse远程调试Tomcat" 指的是在Eclipse集成开发环境中,通过远程调试功能连接并调试在另一台机器上运行的Tomcat服务器。这通常用于在生产环境或测试环境中定位和修复代码问题,而无需直接在该环境中安装IDE...
### Eclipse远程调试Tomcat应用详解 #### 一、前言 在软件开发过程中,调试是不可或缺的一环,尤其是在复杂的分布式系统或服务器端应用中。Eclipse作为一款功能强大的集成开发环境(IDE),提供了丰富的工具来支持...
### Eclipse远程调试详解 #### 一、远程调试概念与应用场景 **远程调试**是指开发者能够通过特定工具在一台机器上(通常称为客户端)对另一台机器(服务端)上正在运行的应用程序进行调试的过程。这种方式使得...
NC Eclipse 远程调试 NC Eclipse 远程调试是指在 Eclipse 集成开发环境中,使用 Java Debug Wire Protocol (JDWP) 实现远程调试 Java 应用程序的功能。JDWP 是一个基于 socket 的通信协议,用于在 debug 客户端和...
### Java开发环境Eclipse远程调试端口配置 #### 运行环境配置 为了实现Java Eclipse远程调试功能,首先需要确保本地开发环境与远程服务器环境之间的兼容性和一致性。具体步骤如下: 1. **运行ncSysconfig命令**:...
eclipse远程调试linux下的tomcat,包括各种详细的说明,配置,亲测可用
"使用Eclipse远程调试Linux服务器Tomcat项目" 一、概述 在开发Java Web应用程序时,需要在远程服务器上进行调试,以便更好地了解程序的执行过程。使用Eclipse远程调试Linux服务器Tomcat项目可以帮助开发者更好地...
Eclipse远程调试项目配置 #### 3.1 选择项目右键选择Debug as 在Eclipse中,右键点击需要远程调试的项目,选择Debug as -> Remote Java Application。 #### 3.2 选择Remote Java Application Eclipse会自动尝试...
### Eclipse远程调试Tomcat知识点详解 #### 一、概述 在软件开发过程中,尤其是在Web应用开发领域,远程调试是一项非常重要的技术。它可以帮助开发者在不同的环境中(如远程服务器)调试应用程序,这对于查找和...
本篇文章将详细讲解如何在Eclipse中设置和使用远程调试Java代码。 首先,我们需要理解远程调试的基本原理。远程调试允许开发者在本地IDE上对运行在另一台机器上的应用程序进行调试。这通常通过JVM的远程调试接口...
### Eclipse远程调试WebSphere Application Server (WAS)代码详解 #### 一、远程调试的意义与应用场景 在软件开发过程中,特别是在分布式系统或大型企业级应用的开发中,开发者经常需要在远程服务器上运行和调试...
Eclipse远程调试的基础是Java Platform Debugger Architecture (JPDA),它由JVM Tool Interface (JVMTI)、Java Debug Interface (JDI)、Java Debug Wire Protocol (JDWP)等组件构成。JPDA定义了一种标准架构,使得...
一个文档,详细的说明了怎么进行远程debug
标题“Eclipse Linux 远程调试”涉及到的是在Linux环境下使用Eclipse集成开发环境(IDE)进行远程Java应用的调试技术。Eclipse是一款强大的开源IDE,广泛用于Java开发,同时也支持其他编程语言。Linux作为开源操作系统...
### 利用Eclipse进行远程调试 #### 一、引言 随着软件开发项目的规模不断扩大以及团队协作的需求日益增加,远程调试技术变得越来越重要。它允许开发者能够在远程服务器上调试程序,这对于分布式系统或者需要在特定...