Eclipse远程调试Tomcat
如何远程调试JVM?
远程调试Tomcat,本质上就是远程调试JVM。倒不是需要了解JVM自身的运行细节,而是要了解JVM上应用程序的运行细节。
无论如何,我们都要获取JVM运行时的内部信息(比如查看调试信息),并对JVM的运行流程进行控制(比如单步执行),才能达到调试的目的。
这个事情光靠调试器本身,肯定是做不到的。不然,JVM的安全性就大打折扣了。除非JVM提供某种“后门”,供调试器查询一些运行时信息,并允许调试器发送一些控制命令。
不得不感慨,JVM的强大。从J2SE 1.4.2开始,就已经提出并实现了JavaTM Platform Debugger Architecture ,简称JPDA。
Tomcat 设置:
在startup.bat下修改如下:找到 if "%OS%" == "Windows_NT" setlocal 然后加入
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787
Eclipse 设置:
Run--->Debug Configuration--->Remote Java Application--->new一个
(指定项目,指定端口 ip等)
最后在tomcat部署一个带断点的 web工程,然后run起来,最后点击上图的Debug。就出效果了。
调试Tomcat 虚拟路径
在tomcat 下新建一个文件fileupload.xml(tomcat-6.0.18/conf/Catalina路径下)
<Context path="/fileUpload1" docBase="E:/project/fileUpload1/webapp" debug="0" reloadable="true" crossConptext="true" />
如何远程调试JVM?
远程调试Tomcat,本质上就是远程调试JVM。倒不是需要了解JVM自身的运行细节,而是要了解JVM上应用程序的运行细节。
无论如何,我们都要获取JVM运行时的内部信息(比如查看调试信息),并对JVM的运行流程进行控制(比如单步执行),才能达到调试的目的。
这个事情光靠调试器本身,肯定是做不到的。不然,JVM的安全性就大打折扣了。除非JVM提供某种“后门”,供调试器查询一些运行时信息,并允许调试器发送一些控制命令。
不得不感慨,JVM的强大。从J2SE 1.4.2开始,就已经提出并实现了JavaTM Platform Debugger Architecture ,简称JPDA。
Tomcat 设置:
在startup.bat下修改如下:找到 if "%OS%" == "Windows_NT" setlocal 然后加入
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787
Eclipse 设置:
Run--->Debug Configuration--->Remote Java Application--->new一个
(指定项目,指定端口 ip等)
最后在tomcat部署一个带断点的 web工程,然后run起来,最后点击上图的Debug。就出效果了。
调试Tomcat 虚拟路径
在tomcat 下新建一个文件fileupload.xml(tomcat-6.0.18/conf/Catalina路径下)
<Context path="/fileUpload1" docBase="E:/project/fileUpload1/webapp" debug="0" reloadable="true" crossConptext="true" />