ref: http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/index.html
在做远程调试时,在windows系统和非windows系统下的配置,Tomcat中会有所差别,具体如下:
第一步、配置tomcat
1、在windows系统中:
打开%CATALINE_HOME%/bin下的文件catalina.bat,加入下面这行:
set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
这是在tomcat启动时设置一些虚拟机参数,使服务器允许远程连接功能。其中 address=8000是远程连接的端口号(可以设置成任意其他不冲突端口)。连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试。(其他的应用服务器比如weblogic也应该可以设置这些参数,有兴趣的可以测试。)
2、在非windows系统中:
还需要把%CATALINE_HOME%/bin/startup.sh中
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
也就是把SET去掉,后面加双引号引起来,因为在Linux下,是没有SET这个语法的。
最后一行exec "$PRGDIR"/"$EXECUTABLE" start "$@" 中的start改成jpda start。由于默认的端口是8000,所以如果8000端口已有他用的话,还需在catalina.sh文件中设 置:JPDA_ADDRESS=8000。
输入命令startup.sh或者catalina.sh jpda start就可启动tomcat。
(
注:
在linux下出现错误时
ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options.
将-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n 去掉。
)
这样就Ok了,重启动tomcat(远程),可以直接独立启动,而不用在eclipes的插件中启动。如在控制台输出“Listening for transport dt_socket at address: 8000”,即说明在tomcat中设置成功。
第二步、配置eclipse
Eclipse中,Run > Debug Configurations,在弹出对话框中右击Remote Java Application新建一个远程调试项,如下所示:
1、在 “Name”输入框中输入远程调试的名称,在“Project”中选择要调试的项目,在“Host”中输入需要远程调试项目的IP,也就是tomcat所 在的IP,在“Port”中输入设置的端口号,比如上面设置的8000,然后钩选“Allow termination of remote VM”,点击“Apply”即可。点debug就可以进入debug状态了
2、在本机设置断点;
3、访问你的测试页面即可看到久违的调试界面。
但每次做上述操作非常烦,不如写个批处理,如取名为Tomcat debug.bat,在这个文件中加入下面几行:
cd %CATALINE_HOME%/bin
set JPDA_ADDRESS=8000
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
将此脚本保存到tomcat/bin目录下,这样需要远程调试时,运行debug.bat即可;不需要远程调试时,还是运行startup.bat文件