1:修改Linux上Tomcat的catalina.sh,第一行添加declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
2:在eclipse中, 点 "Run->Debug...",选 "Remote Java Application",按提示新建,"Project"一项选择需要调试代码的项目,"Host"选择远程Linux主机IP地址,"Port"选择上一行address配置的8000,注意这是一个独立的未占用端口与应用的端口不一样的。
4:在windows上的eclipse中点 "Run->Debug..."选中刚才新建的,点"Debug",如果一切正确就没有提示。此后你在代码中设置的断点就会执行。
5:关于修改源代码,由于java本身的JPDA机制,远程代码运行效果会被及时更新,但是并不能更新远程服务器上的代码,这一点要注意.
*如何远程调试IDE程序
---示例步骤:
1.配置IDE下的*.ini文件,加入如下内容
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=[y默认值|n]
2.启动IDE
3.在'Debug Configurations'中'Remote Java Application'中新建一个配置
如下图
4.单击'Debug',开始debug.
---说明
1.这里server=y表示IDE端作为服务接入端,此时eclipse对应的连接类型为'Socket Attach'
若server=n,或没有server项,则连接类型为'Socket Listen'
*-agentlib:jdwp
---示例
-agentlib:jdwp=transport=dt_socket,server=y,address=8000
这样和-Xrunjdwp:transport=dt_socket,server=y,address=8000是等效的.
总之,对VM的特性是值得很多研究的.
以下内容主要来自参考文档的摘要,稍作补充
*为了进行远程调试,必须使用 Java Virtual Machine (JVM) V5.0 或更新版本
*概念
---JPDA 由两个接口(分别是 JVM Tool Interface 和 JDI)、一个协议(Java Debug Wire Protocol)和两个用于合并它们的软件组件(后端和前端)组成。它的设计目的是让调试人员在任何环境中都可以进行调试
---连接器是一个 JDI 抽象,用来在调试器应用程序和目标 VM 之间建立连接。传输定义应用程序如何进行访问,以及数据如何在前端和后端之间传输。连接器 “映射” 到可用的传输类型和连接模式。在 Sun 的 JPDA 参考实现中,为 Microsoft® Windows® 提供了两个传输机制:套接字传输和共享内存传输。可用的连接器:
* 连接套接字连接器
* 连接共享内存连接器
* 监听套接字连接器
* 监听共享内存连接器
* 启动命令行连接器
*命令行参数
---'-Xdebug' 启用调试特性。
---'-Xrunjdwp:<sub-options> '
在目标 VM 中加载 JDWP 实现。它通过传输和 JDWP 协议与独立的调试器应用程序通信。下面介绍一些特定的子选项。
从 Java V5 开始,您可以使用 -agentlib:jdwp 选项,而不是 -Xdebug 和 -Xrunjdwp。但如果连接到 V5 以前的 VM,只能选择 -Xdebug 和 -Xrunjdwp。下面简单描述 -Xrunjdwp 子选项。
transport
这里通常使用套接字传输。但是在 Windows 平台上也可以使用共享内存传输。
server
如果值为 y,目标应用程序监听将要连接的调试器应用程序。否则,它将连接到特定地址上的调试器应用程序。
address
这是连接的传输地址。如果服务器为 n,将尝试连接到该地址上的调试器应用程序。否则,将在这个端口监听连接。
suspend
如果值为 y,目标 VM 将暂停,直到调试器应用程序进行连接,默认值为y.
如果值为 n,目标 VM 将启动.
---示例
java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000,suspend=y
-jar test.jar
*参考
http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/
什么是远程调试,就是在A机器上利用Eclipse单步跟踪调试B机器上的Web应用,当然调试A机器上Web应用也是没有问题的,90%我都是调试本机的Web应用,远程调试的意义我想我不用说了,大家都会想到它的好处,你可以在本地调试非本地测试环境上的应用,这是件多么美妙的事,所以我就不说它的好处了,那么本地调试呢,我喜欢本地调试也采用下面要介绍的方法,为什么不用myeclipse,WTP,TomcatPlugin等。
下面我阐述下在eclipse中启动Web应用的缺陷:
我本身是非常喜欢使用Myeclipse 做WEB部署的,但是我不喜欢使用Myeclipse启动tomcat,当然WTP,TomcatPlugin等也不喜欢,使用Myeclipse做部署的好处就是非常灵活,不仅可以部署到Web应用里面还可以任意部署到某一指定路径下。但是使用Myeclipse启动tomcat的话,有如下问题:
a.卡,比较慢,尤其是同时启动多个应用.
b.如果断点比较多的时候例如100多个,必须把每个不需要使用的断点先禁用掉或干脆删掉,也就是说web应用启动的时候就已经决定了是debug模式还是run模式。中间不可以切换。
c.一旦eclipse死掉了,web应用也就断掉了。
d.对于程序来说相对路径,类加载路径都是和系统正式运行的情况下完全不同的(要视具体插件而论,每个插件的部署方式都不太一样),即和Web应用独立运行的相对路径和类加载环境有差异,当然熟练的老手可以轻松搞定,但是就目前国内情况看,很多初学者在这个问题上还是很苦恼的。
e.顺便说一句和本话题无关的,eclipse的console并不能完全模拟cmd控制台,一些流操作会有问题。例如:PushbackInputStream
那么使用远程调试的方法做本地调试有什么好处呢?
a. 运行速度比较好。
b. 运行期间可以使用eclipse连接web应用做调试,调试完成后可以断开连接,需要调试的时候可以再重新进行连接,断点的禁用功能可能就很少派上用场了,因为相对于在debug模式和run模式间自由切换。
c. Web应用是独立运行的,不用担心eclipse死掉即玩完了。
d. 从开发到上线运行,环境一直可以保持一致。
说了半天,没有使用过的人可能还是不了解,没关系,可以看完下面的,再回过头看上面的。
下面我举一个小例子介绍如何进行远程调试.
环境:tomcat,Eclipse,做远程调试不需要任何插件。当然可以使用MyEclipse把Web应用部署到tomcat上面,注意只是部署,一般来讲使用远程调试就不需要配置MyEclipse的Web Server了,MyEclipse在这里只起到一个copy文件的作用,好在现在Myeclipse可以随意指定目录copy了。即 Deployment 对话框中的Custom Location,在这里推荐大家一个copy文件的小插件,有了这个插件就不需要Myeclipse部署了。
这次例子的源码很简单:
Jsp 源码如下index.jsp
<%com.syj.test.DebugTest.test("sunyujia test");%>
Hello Remote Debug
在DebugTest类的test方法中做个断点既可测试
下面按步骤进行讲解
1. 将web应用部署到Tomcat的webapp目录下
2. 修改Tomcat/bin/startup.bat文件,在最前面加上如下代码
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
注意上面命令必须写成一行中间不能有换行,-前是空格-后是非空格,由于显示器分辨率不同,该文章在显示的时候可能会有换行的情况。
更多Web服务器远程调试参数可参见
3.必须先启动Tomcat启动tomcat/bin/startup.bat参下图
4.在com.syj.test.DebugTest.test方法中设置断点
5.在eclipse中配置debug,配置完成后点击debug按钮。如图:
6.打开浏览器访问在第1步部署的web应用,访问index.jsp
7.当浏览器访问index.jsp时,由于调用了com.syj.test.DebugTest.test,又因在test方法中设置了断点,所以程序会被断点拦截,如图:
8.不需要调试的时候点击断开,需要调试的时候再点击debug,非常方便,当调试过程中出现引用非本project的源码时(例如跟踪到tomcat里面或spring,hibernate里面),会提示找不到源码,点击相应提示的按钮(到时候editor区只有一个按钮,所以大家就不要问哪个按钮了)可以添加源码继续调试,或在配置debug前就把需要的源码都添加上,在source选项卡里面,因为具体的基本调试这方面知识不属于本话题讨论范围内,就不过多介绍了。
相关推荐
总的来说,Eclipse远程调试Tomcat是一种常用的技术手段,它使开发者能够在本地环境中高效地诊断和解决运行在远程服务器上的应用问题。通过正确配置Tomcat服务器和Eclipse,我们可以充分利用Eclipse的强大调试功能,...
### Eclipse远程调试Tomcat知识点详解 #### 一、概述 在软件开发过程中,尤其是在Web应用开发领域,远程调试是一项非常重要的技术。它可以帮助开发者在不同的环境中(如远程服务器)调试应用程序,这对于查找和...
"使用Eclipse远程调试Linux服务器Tomcat项目" 一、概述 在开发Java Web应用程序时,需要在...使用Eclipse远程调试Linux服务器Tomcat项目可以帮助开发者更好地解决问题,但需要注意配置Linux服务器和Eclipse的细节。
eclipse远程调试linux下的tomcat,包括各种详细的说明,配置,亲测可用
本文将详细讲解如何在Eclipse中进行远程调试Tomcat应用,以帮助开发者高效地定位和解决问题。 首先,确保你已经安装了Eclipse IDE和Tomcat服务器。在Eclipse中配置Tomcat服务器,需要在“Window”菜单中选择...
Eclipse远程调试项目配置 #### 3.1 选择项目右键选择Debug as 在Eclipse中,右键点击需要远程调试的项目,选择Debug as -> Remote Java Application。 #### 3.2 选择Remote Java Application Eclipse会自动尝试...
本文将详细介绍如何通过Eclipse集成开发环境(IDE)配合Apache Tomcat应用服务器实现远程调试的功能。 #### 二、准备工作 在开始配置之前,请确保已经安装了以下组件: - **Eclipse IDE**:推荐使用最新版Eclipse...
在Windows和非Windows系统(如Linux或Mac OS)上,配置远程调试的方法略有不同。 1. Windows系统的配置: 打开Tomcat安装目录下的`%CATALINE_HOME%\bin\catalina.bat`文件,并在文件末尾添加以下行: ``` set ...
在Linux环境中,对Tomcat应用进行远程调试是一个非常实用的功能,可以帮助开发者在不中断服务器运行的情况下定位和解决问题。本文将详细介绍如何实现Linux中Tomcat的远程调试代码。 首先,我们需要编辑Tomcat的启动...
- 用户需要从官方网站下载适用于Windows和Linux的安装包。 - 选择合适的版本进行下载,通常选择最新稳定版本,以免遇到兼容性或bug问题。 2. **在Windows上安装JProfiler** - 安装步骤相对简单,直接运行安装...
这尤其适用于需要在不同操作系统环境下开发和部署应用的情况,比如在Windows上编写代码,而在Linux服务器上运行和测试。以下是详细步骤和注意事项: 1. **配置远程调试参数**: 在远程服务器上,你需要对Tomcat的...
本文将详细介绍如何在三种常用的中间件——WebSphere、WebLogic和Tomcat上开启远程调试功能。 首先,我们来看WebSphere的远程调试配置。在WebSphere Application Server中,这通常通过管理控制台来完成。登录...
远程调试Tomcat的步骤通常包括以下几个关键部分: 1. **配置Tomcat**:修改`bin/catalina.sh`(Linux/Mac)或`bin/catalina.bat`(Windows)文件,添加上述的`JAVA_OPTS`,使Tomcat在启动时进入调试模式。 2. **...
本文介绍的是Tomcat、YAK和Weblogic这三种流行的Web服务器的远程调试配置方法。 首先,我们先来了解服务端设置。对于Tomcat服务器来说,我们需要找到安装目录下的bin目录,编辑catalina.sh文件(Linux系统为...
在Linux环境下,Eclipse提供了一个高效且灵活的工作空间,帮助开发者编写、调试和部署应用程序。下面将详细介绍如何在Linux系统中安装和使用Eclipse。 首先,你需要下载Eclipse的Linux版本。通常,Eclipse会提供...
本主题将深入探讨如何进行远程调试,以Tomcat服务器为例,结合“远程调试tomcat配置.docx”文档内容,我们将详细讲解远程调试的概念、配置方法以及实际应用。 首先,我们需要理解什么是远程调试。远程调试是指...
在Eclipse中,开发者可以利用Eclipse的集成特性,如自动部署和远程调试,以提高开发效率。 在使用这些版本时,首先需要根据你的系统平台(这里是Windows x64)选择相应的安装包。解压后,你可以通过修改`conf/...
在IT开发过程中,尤其是在部署Java应用程序到Linux服务器后,由于环境差异或数据不一致,我们可能会遇到需要远程调试的情况。此时,利用Java Platform Debugger Architecture(JPDA)可以实现这一目标。JPDA是Java...