http://blog.sina.com.cn/s/blog_50197c290100gbop.html
用eclipse如何debug部署在tomcat上的应用
(2009-11-26 10:03:44)一直想分享一下,因为有些同事用MyEclipse其实就是因为可以拿它来debug部署在tomcat上的应用。
myeclipse只不过是作了两个小动作:
1)用启用JPDA参数的模式启动了tomcat,以提供debug支持;
2)启动了一个Eclipse的RemoteJavaApplication;
这些通过tomcat和eclipse就可以做到。我简要说明一下。
配置tomcat的JPDA参数:
如果Tomcat使用的是JDK 1.5以上版本,那么JPDA可以使用JVMDI,配置方法为:
在tomcat的bin/catalina.bat文件中一开始加入:
setJPDA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:8000
如果是Mac OS X或是Linux,则在bin/catalina.sh文件中一开始加入:
exportJPDA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:8000
其中address中的端口不一定非用8000哦,也可以换成其他端口。
如果使用的是JDK 1.4,那么只能使用JVMPI了,见后面的说明。
实际debug:
配置好JPDA参数后,按以下顺序即可debug了:
1)先以Debug模式启动tomcat;
即:在命令行下,进入tomcat的bin目录,执行catalina jpdastart(会打开新窗口)或者catalina jpda run命令(在当前窗口,和catalina run类似);
2)再在eclipse中运行相应的Remote Java Application;
第一次运行时,需要先建立这个Remote Java Application.方法为打开"Debug"->"Open Debug Dialog",新建一个Remote JavaApplication, 给个合适的名字,Connection Type选择"Standard(Socket Attach)",Host和端口指定为localhost:8000(和上面tomcat中配置的端口一致),如下图示:
3)根据需要在java/jsp中设置断点,跟踪调试了;(和您熟悉的MyEclipse下一样)
说明:
1)以上方法在Windows/Mac OS X,Tomcat 5.5.25下均测试通过;Tomcat5.0.x和6.0.x则参见4楼;
2)如果是JDK 1.4,JPDA参数需要调整为-Xdebug-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=localhost:8000,不过没试过,可能个别参数还需要再调整一下;(建议用JDK1.5,因为JVMDI比JVMPI强大很多)
3)JPDA的相关参数说明见 http://java.sun.com/j2se/1.5.0/docs/guide/jpda/conninv.html
4)debug并不是诊断和解决问题的唯一方法,很多时候分析运行日志能更快地发现原因和解决问题