目标:
远程调试对应用程序开发十分有用。例如,为不能托管开发平台的低端机器开发程序,或在专用的机器上(比如服务不能中断的 Web 服务器)调试程序。其他情况包括:运行在内存小或 CUP 性能低的设备上的 Java 应用程序(比如移动设备),或者开发人员想要将应用程序和开发环境分开,等等
条件:
1.如果您还没安装该程序,请下载 Eclipse V3.4(Ganymede)。在 Ganymede 中,套接字(socket)监听连接器被添加到 Remote Java Application 启动配置类型。Eclipse 最新的套接字监听连接器允许您打开 Java 调试器,它能够监听特定套接字上的连接。可以从命令行选项打开被调试的程序,并将其连接到调试器。在 Ganymede 发布之前,仅有一个连接套接字的连接器,被调试的程序所在的机器必须是一个与调试器相连的调试主机。由于受到内存和 CPU 不足的限制,要想让移动设备充当主机是不现实的。
2.为了进行远程调试,必须使用 Java Virtual Machine (JVM) V5.0 或更新版本,比如 IBM® J9 或 Sun Microsystem 的 Java SE Development Kit(JDK)。本文主要讨论远程调试,而不是每个 Eclipse 调试特性的细节。
3.要进行调试,要保证eclipse中的代码和远程linux中的tomcat中的放置的代码一致
概念:
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 是一个高级的接口,它定义用于远程调试的信息和请求。
补充常用词:
- JDI — Java 调试接口(Java Debug Interface)
- JDT — Java 开发工具(Java Development Tools)
- JDWP — Java 调试网络协议(Java Debug Wire Protocol)
- JPDA — Java 平台调试器架构(Java Platform Debugger Architecture)
- JVM — Java 虚拟机(Java Virtual Machine)
- JVMDI — JVM 调试接口(JVM Debug Interface)
- JVMTI — JVM 工具接口(JVM Tool Interface)
- VM — 虚拟机(Virtual Machine)
配置:
1.在tomcat的catalina.sh文件的正文的第一行添加:
declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999"
(注意,上面的代码为一行,每个人机器的分辨率不同,显示可能不尽相同)。
2.运行Linux上的tomcat\bin\catalina.sh启动tomcat,
命令如下:当前tomcat\bin目录下
输入:./catalina.sh run (这样可以看到Tomcat的信息运行信息)
如果提示没有权限,需要赋给这个脚本执行权限,这个我就不说了,凡是会linux常用命令的人都知道怎么做,
Listening for transport dt_socket at address: 9999" 这样的信息,说明调试端口已经被监听,下面会打印正常启动的日志信息。
在eclipse中的debug的参数配置中,添加要调试的项目名称,
添加要tomcat所在的主机的IP 地址和tomcat 调试的端口号address=9999。
然后点击debug 按钮,如下图
通过正常的访问方式(http://远程IP:8080/index.jsp),进行代码的调试工作(有的人在地址处说要给localhost,但是经过本人的尝试,是不可以的,必须和正常访问的相同)。
现在就可以在调试的地方打断点进行调试了。(进入debug模式,然后发现一个删掉的标志,停止按钮的右边,表示已经和远程的Linux下的tomcat链接上了,然后就可以本地调试了),如下图:
以下是本文用到的参数:
从 Java V5 开始,您可以使用 -agentlib:jdwp 选项,而不是 -Xdebug 和 -Xrunjdwp。但如果连接到 V5 以前的 VM,只能选择 -Xdebug 和 -Xrunjdwp。下面简单描述 -Xrunjdwp 子选项。
第二种方法:
用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.
以上是我在工作遇到的问题,然后找资料总结出来的东西,如有雷同,纯属巧合。