Vincent.Chan‘s Blog

常用链接

统计

积分与排名

网站

最新评论

也谈Eclipse中的远程调试


问题的由来:平时的开发,我们基本都是在 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.jpg 

这里,我在本机也用 remote 调试程序。当然,自然是有好处的了。 eclipse 中调程序的都知道,在 eclipse 中再启动其他服务(不一定是 Tomcat 啦),会使eclipse编辑的响应速度急剧下降,甚至假死,很是不爽!现在好了,这么一设,既有了速度,又可以设调试断点,哈哈,舒服啊。

posted on 2006-06-14 19:49 Vincent.Chen 阅读(252) 评论(0)  编辑  收藏 所属分类: Eclipse


只有注册用户登录后才能发表评论。


网站导航: