使用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