使用Eclipse进行远程调试
以下内容转自:http://blog.csdn.net/fcly2013/article/details/17751195/
Eclipse进行远程调试linux 环境的tomcat配置 更新maven web项目
在网上找了找关于远程调试的配置,记录在这里以备后续查找!
平常我们都是用windows开发,但是有时候需要将tomcat部署到Linux下去运行,比如执行shell脚本。这个时候我们就需要在linux环境下进行调试。我们可以利用myeclipse的远程调试功能,来进行操作。-- 远程调试tomcat的配置,也可以是其他的web应用服务器,但是配置是不一样的。
情况分类:
1、tomcat在window下。
打开%CATALINE_HOME%/bin下的文件catalina.bat,加入下面这行:
set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999
其中address=8787是没被使用的端口号。连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试。
2、tomcat在linxu下。
在tomcat的catalina.sh文件的正文的第一行添加:
declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999"
配置完成tomcat之后,启动tomcat(正常启动方式),可以查看监听端口是否已经监听。
[root@UC100C ~]# netstat -antp | grep 9999
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 24178/./jdk1.6.0_31
[root@UC100C
然后在eclipse中的debug的参数配置中,添加要调试的项目名称,
添加要tomcat所在的主机的IP 地址和tomcat 调试的端口号address=9999。
然后点击debug 按钮,如下图

通过正常的访问方式(http://远程IP:8080/index.jsp),进行代码的调试工作.
按键操作:
1、F5键与F6键均为单步调试,F5是进入本行代码中执行,F6是执行本行代码,跳到下一行;
2、F7是跳出函数;
3、F8是执行到最后。
现在就可以在调试的地方打断点进行调试了。(进入debug模式,然后发现一个删掉的标志,停止按钮的右边,表示已经和远程的Linux下的tomcat链接上了,然后就可以本地调试了),如下图:

以下是本文用到的参数:
-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 将暂停,直到调试器应用程序进行连接。
还有一种方法(同第一种只是启动方式不一样):
用Java的JPDA远程调试程序
在catalina.sh的配置文件中,修改JPDA_ADDRESS 对于的端口(要进行远程调试的端口),
使用命令./catalina.sh jpda start
启动tomcat服务
4. 在eclipse中的debug的参数配置中,添加要调试的项目名称,
添加要tomcat所在的主机的IP 地址和tomcat 调试的端口号address=9999。
然后点击debug 按钮。
通过正常的访问方式(http://远程IP:8080/index.jsp),进行代码的调试工作(有的人在地址处说要给localhost,但是经过本人的尝试,是不可以的,必须和正常访问的相同)。
解决:Eclipse调试tomcat时报45秒超时 2011-12-21 14:07:16标签:tomcat 职场 休闲 45秒
修改 workspace\.metadata\.plugins\org.eclipse.wst.server.core\servers.xml文件。
在eclipse下双机tomcat就可以看到Tomcat的servers.xml配置文件,修改其中timeout的参数值,我一般都是修改为4500.
2014年12月31日更新maven项目的远程调试
上面的配置还是需要的,并且一样,只是需要在工程的pom.xml中增加一个插件即可:
代码如下:
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>tomcat-maven-plugin</artifactId>
- </plugin>
增加到plugins节点中间即可!!
然后操作任然和上面的一样。。。。
以下内容转自:http://blog.csdn.net/sunyujia/article/details/2614614




版权声明:本文为个人学习总结,欢迎转载,转载时请附加原文链接
以前看到别人使用调试远程代码感觉好牛逼的样子,前一段时间想学来着,但是由于实际工作中暂时没有用上最终没学会,好悲伤!今天终于需要用了,Google+Baidu了一堆,终于将Windows Tomcat远程调试给学会了,不吹牛逼了,进入正题。
1. 配置windows tomcat服务器端:
- rem*******设置Tomcat目录*******--
- set CATALINE_HOME=E:\V6.0\ApacheJetspeed
- E:
- rem 8787为可用端口,为远程调试监听端口--
- cd %CATALINE_HOME%/bin
- set JPDA_ADDRESS=8787
- set JPDA_TRANSPORT=dt_socket
- set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787
- startup
******************************************************华丽的分割线******************************************************
原文链接:http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/
JPDA 简介
Sun Microsystem 的 Java Platform Debugger Architecture (JPDA) 技术是一个多层架构,使您能够在各种环境中轻松调试 Java 应用程序。JPDA 由两个接口(分别是 JVM Tool Interface 和 JDI)、一个协议(java Debug Wire Protocol)和两个用于合并它们的软件组件(后端和前端)组成。它的设计目的是让调试人员在任何环境中都可以进行调试。JPDA 不仅能够用于桌面系统,而且能够在嵌入式系统上很好地工作。
JVM Tool Interface (JVMTI) 规定必须为调试提供 VM(编辑注:从 Java V5 开始,将用 JVMTI 代替 Java V1.4 中的 JVMDI)。Java Debug Wire Protocol (JDWP) 描述调试信息的格式,以及在被调试的进程和调试器前端之间传输的请求,调试器前端实现 JDI,比如 Eclipse、Borland JBuilder 等。根据 Sun 的 JPDA 规范,被调试的程序常常称为 debuggee。JDI 是一个高级的接口,它定义用于远程调试的信息和请求。下面给出了调试器的架构。
清单 1. Java 平台调试器架构
Components Debugger Interfaces
/ |--------------|
/ | VM |
debuggee -----( |--------------| <---- JVMTI - Java VM Tool Interface
\ | back-end |
\ |--------------|
/ |
comm channel --( | <------------ JDWP - Java Debug Wire Protocol
\ |
/ |--------------|
/ | front-end |
debugger -----( |--------------| <---- JDI - Java Debug Interface
\ | UI |
\ |--------------|
因此,任何第三方工具和基于 JPDA 的 VM 应该都能协调工作。通过这个客户机-服务器架构,您可以从运行该平台的本地工作站调试 Java 程序,甚至还可以通过网络进行远程调试。
在讨论调试场景之前,我们先了解 JPDA 规范中的两个术语:连接器和传输。连接器是一个 JDI 抽象,用来在调试器应用程序和目标 VM 之间建立连接。传输定义应用程序如何进行访问,以及数据如何在前端和后端之间传输。连接器 “映射” 到可用的传输类型和连接模式。在 Sun 的 JPDA 参考实现中,为 Microsoft® Windows® 提供了两个传输机制:套接字传输和共享内存传输。可用的连接器:
- 连接套接字连接器
- 连接共享内存连接器
- 监听套接字连接器
- 监听共享内存连接器
- 启动命令行连接器
在调试器应用程序和目标 VM 之间建立连接时,有一端将用作服务器并监听连接。随后,另一端将连接到监听器并建立一个连接。通过连接,调试器应用程序或目标 VM 都可以充当服务器。进程之间的通信可以在同一个机器或不同的机器上运行。
要远程调试 Java 程序,难点不是在调试器的前端,而是远程 Java 后端。不幸的是,Eclipse 帮助系统中为这方面提供的信息并不多。事实上,JDI 和 JVMTI 是分别由 Eclipse 和 Java 运行时环境实现的。我们仅需要考虑 JDMP,因为它包含与 JVMTI 和 JDI 进行通信所需的信息。JDWP 包含许多参数,用于为远程 Java 应用程序调用所需的程序。以下是本文用到的一些参数。
- -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 将暂停,直到调试器应用程序进行连接。
要获得每个调试设置的详细解释,请参考 JPDA 文档(参见 参考资料)。
清单 2 是一个示例,显示如何在调试模式下启动 VM 并监听端口 8765 的套接字连接。
清单 2. 作为调试服务器的目标 VM
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8765
清单 3 显示如何使用位于 8000 端口的主机 127.0.0.1 上的套接字连接运行中的调试器应用程序。
清单 3. 作为调试客户机的目标 VM
-Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000
2. 配置Eclipse远程调试:
2.1 Debug ->Debug Configurations;
2.2 硬菜来了:
2.3 Debug
3. 总结:
如果不想了解太多的话,我建议
3.1. 只需要将第一步的脚本复制下来保存到一个.bat文件中;
3.2 按照如图在Eclipse中配置
4. 注意:
4.1 脚本中的E:是为了切换到CATALINE_HOME目录中(可不要犯低级错误哦);
4.2 演示的【端口:8787】记住为空闲端口,可以任意修改;
4.3 可以使用命令:netstat -ano | findstr 8787检测JPDA监听端口是否正常开启;
4.4 连接远程主机时若无法连接远程连接,很有可能是服务器防火墙屏蔽了,window7环境配置端口过滤如下图:
浙公网安备 33010602011771号