使用Eclipse进行远程调试
一些基础知识
JPDA(Java Platform Debugger Architecture)是实现Java远程调试的基础,它是一个CS架构,包含三个组件:
- JVMTI(JVM Tool Interface ):服务端,即debuggee端。该接口代替JDK1.4的JVMDI,为被调试VM提供支持
- JDWP(Java Debug Wire Protocol):描述了调试信息、请求信息的格式。支持前后端的通信
- JDI(Java Debug Interface):客户端,即debugger端。Eclipse实现了JDI
理论上,任何实现了JDI的前端,均可调式支持JPDA的VM。
JDWP相关的虚拟机参数
通过设置VM参数,可以把VM作为调试服务端或者客户机:
参数名 | 参数说明 |
-Xdebug | 启用调试特性 |
-Xrunjdwp:<子选项> | 包含一系列的子选项,来控制调试行为:
transport:传输方式,通常使用套接字server:如果为y,表示当前VM是debuggee,否则为debugger address:对于debuggee,指定监听地址和端口;对于debugger,指定需要连接的地址和端口 suspend:如果为y,则VM暂停,直到debugger连接 |
1 |
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 |
debugger虚拟机参数样例:
1 |
-Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000 |
在Eclipse中配置远程调试客户端
点击工具栏上的Debug按钮,选择Debug Configurations,新建一个调试配置,其中Host、Port分别填写被调试VM的地址和调试端口。参考下图:
配置远程调试服务端
下面以Tomcat和Weblogic为例,描述如何配置远程调试的服务端,本质上都是添加对应的VM参数
Tomcat 6.0远程调试服务端
Tomcat6已经内置了对JDPA的支持,只需要按如下命令启动即可:
1 2 |
#监听默认的8000端口 catalina jpda start |
亦可修改脚本catalina.bat,添加类似以下内容:
1 |
SET CATALINA_OPTS=-server -Xms1024m -Xmx1024m -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n |
Weblogic 7.0远程调试服务端(JDK1.4)
在weblogic的启动目录中修改startWLS.cmd这一文件,它位于%weblogic_home%\server\bin\目录下,添加如下一行:
1 |
set DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n |
然后,把默认的set JAVA_VM=-hotspot后面的参数-hotspot去掉,否则会启动不了,提示参数错误
操作系统知识集锦 →
Leave a Reply