Eclipse远程debug的简单实现

远程执行代码
placeholder image
admin 发布于:2012-07-26 22:55:00
阅读:loading

eclipse的debug是非常好使的一个功能,当年都使用System.out.println("+++++++++++++++++++++++");来调试代码的笑笑,我也就是在11年才开始使用eclipse的debug功能,可谓是非常给力呀。

        在公司项目开发过程中,团队协作是必要的,大家都往服务器上提交代码,服务器上部署的项目往往是各位程序实现的一个验证,哪怕本机上面的再准确,但是服务器上面的出错了,那肯定是不行的,导致这个错误有可能是自己代码本身就有问题,但是没有自验出来,还有可能是别的同事修改了某些公共的配置信息,再有就是由于本机与服务器上面的*作系统呐,java运行环境呐,tomcat版本呐,等等等等各种各样的原因,这时候我们如果想实现快捷解决问题的办法就是使用eclipse的远程debug功能,来达到更早的发现问题,更快的解决问题。好吧,废话到此省略一些字。本文的目的就是让你与我分享远程debug的喜悦。如果你早会了,你就笑而不语吧。

        现在想想远程debug在第一家公司就就做过这样的事情了,当时采用的方式是在服务器上安装一套开发环境,有问题直接用eclipse调试了。 

 

主要分为2个步骤来实现,

第一:先修改tomcat配置,使其支持远程debug。

第二:修改eclipse调试该远程tomcat的配置项。

第三:如果配置正确,则没有第三,如果有其他的问题,则需要自己查阅资料,自己解决。

笔者我实现的都是基于MyEclipse和tomcat的默认配置下完成的,如果哪里不一致,需要注意。

先说说MyEclipse吧,我使用的是9.0版本,这个无论是eclipse还是其他MyE的版本这个问题都不大(笔者以前在Eclipse环境下设置过,但是没成功,所以界面什么的都一样)。

Tomcat我使用的是apache-tomcat-6.0.35版本,从apache官网上下载的绿色版的,该版本是最稳定的6.0的版本,配置好环境变量,使其单独运行$TOMCAT_HOME$/bin/startup.bat,此文件能够正常启动tomcat。修改配置正是开始:

 

1、先修改catalina.bat文件

 

set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787

这里注意下,这是一行代码

将上诉代码放置该文件的第二行,也就是@echo off底下。这里需要注意一下,用editplus等相关软件打开这个文件,会发现有这行代码

set ACTION=stop
set CATALINA_OPTS=
goto execCmd

此处的set CATALINA_OPTS=空白,直接在这里赋值上不就行了吗,不需要自己再加,笔者我最开始就是这么搞的,但是屡试都不成功,仔细看看该文件的代码之后,有点明白了,应该是这个文件里面有很多判断逻辑,导致这样代码没有正常的被执行,个人是猜的,因为确实不懂这个.bat的语法,也确实是看到类似代码if "%OS%" == "Windows_NT" setlocal,超多的判断逻辑,所以我有理由认为是配置代码没有被执行。

配置完毕之后,再启动startup.bat文件,第一行代码,如果看到下图中的标红区域,则恭喜,你第一步已经成功,如果没有看到,则goto上一步。下图为:

image.png

图中的8787则为tomcat中配置的端口,也可以使用windows命令查看该端口是否已经开启,这里就免了吧。

 

2、设置MyEclipse的debug

 

在工作空间中,选中项目--右键--Debug As--Debug Configurations,弹出来的窗口界面如下:

image.png

配置完以上之后,点击Debug按钮,顺利的话,则没有任何反应,如果失败的话,直接弹出错误窗口,笔记我出过的错误,走过的弯弯就不错了,有一点需要切记,就是再点击Debug按钮之前,必须要先启动远程的Tomcat服务器。好吧,如果没有错误提示,则说明成功了,接下来就验证一下吧。还有一个前提,服务器上面的代码要与本机代码一致,这个怎么个一致法,谁不明白单说吧。感觉访问下服务器吧,访问服务器的某个功能,然后在我们本地在访问的对应的功能的源文件中打上断点吧,试试吧。

最后我再来个截图吧,有图有真相。

debug效果图-含水印.gif


图片说明:上图中演示了启动debug远程调试,以及调试的过程,亮点在于eclipse的Servers中所有的tomcat均为Stop状态,单独启动了一个Tomcat黑窗口,这就能说明eclipse本地调试的不是本地(非eclipse中启动的)Tomcat中的Project。不是QQ会员,录制这张图,花了不少时间呀,因为要控制在大小3M以内,还得突出亮点。
好吧,3个小时过去了,就搞了个这东西出来。关于eclipse的远程debug相关的理论在网上搜搜吧。


@time 2013-01-11 补充(如何开启 Win7 服务器上远程端口

一般情况下如果debug是远程的服务器上的代码时,需要开启服务器的debug监听端口,这里给出一个在win7下面的监听端口的配置,如下图:
 image.png

 

@time 2013-01-25 补充一下(如何停止远程debug

有的时候debug完毕之后,找到问题原因了,需要停止远程debug让其他同事们继续访问,则需要停止本地的debug。目前找到两种停止远程debug的方式,分别为:
1)直接关闭eclipse,这种办法最简单直接
2) 在eclipse中show view debug模式,比如我现在对TestRemoteDebug工程进行远程debug,那么结束此debug的真相为下图:

停止远程debug-含水印.gif

备注:上图中点击红方块旁边的红色(N)图标也可以,disconnect

@time 2013-08-15 补充一下(如果开启远程Win Server2003远程debug端口

         由于这项目部署在Win Server2003服务器下,故这里给出一个在Server2003添加测试端口成功的方式:打开网络连接——右键本地连接属性(应该是服务器网络具体使用的连接)——高级选项卡——windows防火墙设置——高级选项卡——找到本地连接设置,点击设置按钮——在高级设置的服务选项卡中点击添加按钮——填写相关的服务设置,其中IP地址就填本机的IP地址,内外部端口号可一致,如(8787),跟tomcat下的远程debug监听端口一致,端口协议选择TCP,点击确定按钮。


@20180909 补充Tomcat8.5版本时的远程调试配置

最近在对于Tomcat8.5.30版本的进行远程debug时,发现上述的配置会直接导致Tomcat无法启动成功,经过百科的最终结果是需要修改两个地方,详细如下:

在startup.bat文件中第56行,有如下代码

call "%EXECUTABLE%" start %CMD_LINE_ARGS%1

只需在start前加上jpda就可以了,修改如下:

call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%1

跟以前的启动方式没有什么区别,windows双击startup.bat即可

上述许多内容已经过时和过期了,留存本篇文章仅为方便个人查看,原始文章的信息参考:

原始链接:hhttps://www.chendd.cn/information/viewInformation/other/85.a

最后更新:2012-07-26 22:55:00

访问次数:255

评论次数:0

点赞个数:0

 点赞


 发表评论

当前回复:作者

 评论列表


留言区