问题的由来:平时的开发,我们基本都是在
Debug
模
式下做的,这样便于发现问题给于修正。一旦项目到了实施测阶段,程序被部署到服务器上,现场调试就会成为一个问题。因为被部署的服务器上的日志往往不能提
供足够的信息;或是有了足够的信息,可即时想得到一个状态点的信息又不是太容易(比如说几个关键变量的即时值)。于是想到,如果可以象本机调试程序一样就
好了。
于是(呵呵,又是于是),
google
了一下,真得还是找到了一篇文章(先谢谢了),做法是
只要在
TOMCAT
的启动文件中加入一些参数就可以在
ECLIPSE
中启动
REMOTE_DEBUG
了,具体方法如下:
在
%TOMCAT_HOME%\bin\catalina.bat
文件中加入
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9046
。
打开
ECLIPSE
,在
ECLIPSE
的
RUN
菜单中选择
DEBUG...
项,然后在左边的树形菜单中新增一个
REMOTE_DEBUG(
远程调试
)
,填
写最基本的几项信息就行了,这几项信息是:调试名称,工程名称,调试主机的
URL
以及
PORT
,在
allow terminate of remote VM
前打上勾
.
最主要的就是端口信息,这个端口信息来自于上面那一串参数中的
address
项,可以将
address
设置为任何未被占用的端口。
以控制台方式启动
TOMCAT
,可以在控制台看到
"Listening for transport dt_socket at address: 5888"
这样的信息,说明调试端口已经被监听。然后打开之前设置的调试并在
IE
或者
ECLIPSE
内置的浏览器中输入
URL
运行
WEB
程序,记得在运行
WEB
程序之前要设置断点。
现在就可以在
ECLIPSE
中进行
WEB
调试了
...
要说明的是:
我并没按上文那样设置变量。我看了
catalina.bat
这个批处理文件,写的很严谨,环境变量设置有它自己的规范,我不想更改。在这个文件我看到了这么一个名字
setenv.bat
。对了,看到它你就知道,你可以建立这么一个文件把
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9046
放进去,OK啦。但这是只是
windows
中的作法。
岔开说一句话。其实,上面的参数设置并不是都需要的,主要的就两项:
transport
和
address
,对应于
catalina.bat
文件中
JPDA_TRANSPORT
和
JPDA_ADDRESS
现两个变量,你可以直接查询并修改这两个参数的值,注意
JPDA_TRANSPORT
的值一定是
dt_socket
才行。不过启动方式有些变化,命令行需要这样:
catalina.bat
jpda start
在
Linux
中,可以直接
./
catalina.sh
jpda start
命令直接启动调试模式,不过默认的端口是
8000
,
你也可以在
catalina.sh
查找
JPDA_ADDRESS="8000"
把端口修改想要的值。至于写配置文件
setenv.sh
直接用
./starup.sh
启动的形式,我没成功,呵呵
下面这个就是
Eclipse
中的
Debug
设置窗口了,别告诉我你不会调出来,呵呵
这里,我在本机也用
remote
调试程序。当然,自然是有好处的了。
eclipse
中调程序的都知道,在
eclipse
中再启动其他服务(不一定是
Tomcat
啦),会使eclipse编辑的响应速度急剧下降,甚至假死,很是不爽!现在好了,这么一设,既有了速度,又可以设调试断点,哈哈,舒服啊。