由于本地环境是windows环境,不知道怎么在本地调试web应用的代码,今天尝试了一下远程调试,觉得挺好的,记录一下:

1、将代码先拉到本地,保证本地代码和服务器上的代码是一致的(具体原因我还不知道为什么,如果不一致会怎么样呢?)

2、在服务器上启动应用的时候,设置远程调试的模式,从网上查的是这样的:

set JAVA_OPTS= -Xdebug -Xnoagent  -Xrunjdwp:transport=dt_socket,address=8787, server=y, suspend=n %JAVA_OPTS%

由于我们的JAVA_OPTS的配置每个应用都不一样,只要保证把其中的-Xdebug配置上应该就可以了。

在我们的启动代码中(vi env)本身就有:JAVA_DEBUG_OPT=" -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n ",另外如果是在开发模式下还有一项:JAVA_OPTS=" $JAVA_MEM_OPTS $JAVA_DEBUG_OPT $JAVA_MONITOR_OPTS ",最开始我只看到这行脚本,以为就ok了,后来才发现我们的java参数中还是没有-Xdebug一项,因为我们选择的是测试模式,没有执行这一行脚本。

方法:在原来的export JAVA_OPTS=" $JAVA_OPTS $JAVA_OPTS_EXT $JAVA_LOGGING_OPTS"中增加了 $JAVA_DEBUG_OPT,即变为: export JAVA_OPTS=" $JAVA_OPTS $JAVA_OPTS_EXT $JAVA_LOGGING_OPTS $JAVA_DEBUG_OPT",重新启动就可以了(使用ps -ef |grep java看一下当前的java参数中就有-Xdebug选项了)

3、在eclipse中设置远程调试选项:

   在run->Debug Configrations...中,选择Remote Java Application,如果当前处于某java文件中,双击该选项,该java文件就会出现在下面,如下图所示,Host中填写服务器ip,Port选项为-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n 中的8000,点击Apply,debug。

4、下面就可以访问自己的应用了,在页面中操作后,就可以在本地进行调试了。别忘了在想要调试的地方加断点啊。

好了,终于可以去看一个逻辑对不对了哈哈。

可以参考下面的文章:

http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/

http://www.hackhome.com/InfoView/Article_114136.html