程序就是这么一个神奇的东西,有时你的一个项目,在本机上运行得还是好好的,可当你把这货放到了服务器上,同样的条件就是结果不一样。于是就灰常想看一下程序在远程运行时候的状态,希望让程序在远程运行,还可以在本机打断点跟一下,这就用到了用eclipse远程调试Tomcat。记得以前好久之前研究了一下,怎么也没弄成功。最近终于OK啦。
一、调试准备
首先得有一个在远程服务器上的Tomcat与一个在本地的Eclipse,还有就是一个已经部署在远程Tomcat上并且源代码在本地Eclipse上的程序。当然如果木有远程的服务器就用自己的本机当远程的服务器试下也行哈。
二、配置tomcat
1、如果远程服务器是Windows NT的环境,那就在%CATALINE_HOME%/bin 下建立debug.bat文件,在里面贴入如下内容:
set JPDA_ADDRESS=8888
set JPDA_TRANSPORT=dt_socket
set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888
startup
其中的两处8787是要启用的远程端口,当然任何未被使用的端口都可以。连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试。
2、如果远程服务器是Linux/Unix环境,就编辑%CATALINE_HOME%/bin/startup.sh文件,找到其中最后一行,将
exec "$PRGDIR"/"$EXECUTABLE" start "[email protected]"
改为
exec "$PRGDIR"/"$EXECUTABLE" jpda start "[email protected]"
默认的远程调试端口是8000,如果被占用,编辑%CATALINE_HOME%/bin/catalina.sh文件,将
JPDA_ADDRESS="8000"
改为
JPDA_ADDRESS="8888"
3 、在Windows下运行debug.bat 在Linux下运行 startup.sh启动Tomcat。
如果在启动日志中出现
Listening for transport dt_socket at address: 8888
则说明远程调试端口监听成功。
三、配置Eclipse
在要调试的项目上右键,选择 调试方式->调试配置
打开配置界面,选择 远程Java应用程序 新建一个远程调试
IP地址就是远程服务器IP地址,端口是刚才配置的Tomcat的远程调试监听端口。配置好后点应用,调试。
这时打开调试界面就可以看到线程状态,也可以随时断开调试。
四、调试程序
接下来就可以正常的打断点来调试远程服务器上的Java程序了,可以随时查看变量状态等,还是十分Happy的。不过目前没能把System.out.println()的东西打印到本地,如果有这样一种方法,谁知道请不吝赐教哦!~