关于tomcat的远程调试
最近做项目开发发现,在本地运行好好的项目发布到测试服务器既然不好使了,很是郁闷,周围的大神们就给了一条明路:远程调试
查看了网上例子太多了,好像自己真的不会使用,就查了一些简单的资料发现其实很简单
下面是我自己使用过程:
首先既然远程调试肯定你得保证本地和服务器上代码一致(不一致的话真的会串行的),给调试再来很大麻烦
再次呢这是正题 打开tomcat下的bin目录 你会发现主要的有两类文件并且还是成对出现的sh后缀的和bat后缀的(这里主要关注这两类文件:bat是window环境下执行的,sh是linux下执行的文件,所以呢你要是修改最好成对的修改,远程调试也不例外,就是修改这里的文件)
在说明一点,start.bat 或者start.sh 这俩个文件只是一个导火索,实质你的看catalina.bat或者catalina.sh
下面找找里面的代码看看,打开你的catalina.bat 文件 :很明显的逻辑判断,还有这么明显的goto
if not ""%1"" == ""jpda"" goto noJpda
set JPDA=jpda
if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport
set JPDA_TRANSPORT=dt_socket
:gotJpdaTransport
if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
set JPDA_ADDRESS=8000
:gotJpdaAddress
if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend
set JPDA_SUSPEND=n
:gotJpdaSuspend
if not "%JPDA_OPTS%" == "" goto gotJpdaOpts
set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
:gotJpdaOpts
shift
:noJpda
没有jpda 就走正常的启动,否则呢,那当然就是jpda了(jpda好像就是远程调试这个意思)
不行再打开catalina.sh也是有相似的代码的,既然找到了根源,那就得在导火索上加点装饰不就是走jpda了
在打开start.bat 找到最后一行 你会发现有个start :
call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS% 红色部位没有吧 填上就好了。
到此应该对于tomcat的配置基本上结束了,有疑问了,正常启动我是有端口的(看到上边这个8000了,就是他),还有这个set JPDA_TRANSPORT=dt_socket 好像不用变也行,连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试。
好了,现在启动tomcat 你就会发现启动日志中首先看到打出了正在监听8000 就这样启动了
下面就是myEclipse的操作了:我怎么没法截图呢,推荐个地址吧http://blog.sina.com.cn/s/blog_4e11d20b01016491.html,看这个吧