Eclipse 远程调试

Eclipse 远程调试

一.应用场景

在实际的测试过程中,可能会遇到由于程序执行的不间断性,我们无法构造测试场景来验证某个功能的正确性,只有通过代码级的调试才能验证功能是否正确。然而开发本地调试的话,不具有说服力,这时我们测试人员必须连接到linux下的基线版本代码进行远程调试


二.调试步骤

1、部署服务工程到Linux系统下的Tomcat中,本文档重点是远程调式,为了防止文档篇幅累赘,这里就不介绍部署工程了。

2、更改tomcat远程调试端口

(1).更改Linux系统上的Tomcat启动文件远程调试端口,登录服务器,找到Tomcat安装路径,进入到bin目录

(2).打开目录下的catalina.sh文件,找到JPDA_ADDRESS=”8000”8000代表远程调试端口,可以更改成其他没有被占用的端口,更改完成后保存退出。

3.debug模式启动Tomcat

(1).进入tomcatbin目录,输入./catalina.shjpda run或者./catalina.sh jpda start(我输入这个成功的)命令启动tomcat(已使用)

 

./catalina.sh jpdastart

4.

4.配置MyEclipse远程调试

(1).在需要远程调试的类中选择run=》open debugdialog菜单打开配置界面,在弹出的框中,定义项目名称,选择要断点调试的项目,Connect type(默认Standard (SocketAttach)),定义我们的web项目放在哪里(就是我们的远程虚拟机在哪里),填写他的ip以及提供的服务端口号,tomcat的这个版本是8000.最后选择source标签,将项目的源码加入,我这里一般选择add一个javaproject的方式。点击“Apply”,然后点击“Debug”。

3、切换到debug模式下,就能看到debug的相关选项都是激活状态。在本地的source文件中加断点,然后请求服务的链接,看看我们的断点调试是否成功。

补充一下,以上就可以进行远程调试了,但是如果想要在linux控制台中打印出信息,则修改linux服务器上的tomcat的启动文件,步骤如下:

修改配置文件catalina.batstartup.bat

1.在环境变量中添加 jpda_address=8000,也可以加到startup.bat文件@echooff下面如:set jpda_address=8000

2.打开catalina.bat,在文件中找到"set JPDA_TRANSPORT",把它的值设为dt_socket

3.打开startup.bat,在文件中找到"call"%EXECUTABLE%" start %CMD_LINE_ARGS%",

改为" call"%EXECUTABLE%" jpda start %CMD_LINE_ARGS%",

也就是在start前加jpda.

4.eclipse debug中选择"Remote Java Application" ,新建一个批portjpda_address的值

 

 

具体步骤

服务器端tomcat

tomcatbin目录

计算机生成了可选文字: L‘甘曰‘心“‘口从‘口F占习占“J,‘山占山一占。。‘1,[roo七O七fc日maplblnl令./ca七allna.3h〕Pda3七己r七

-

调试端

右击项目-debug as-> debug configuration

在弹出的如下图中右击remote java Application单击new然后输入如下数据,source选择相应项目即可

计算机生成了可选文字: 日川门司日日日日日日日日日日―-国Debugcon6gurationsCredte,manaqe,andrunconfiqurdtions妞achtoaJavavirtualmachineacceptingdebugconnections令口圈x}曰蓑,MWeb'erviceneSource口Common.团SMSMain(2)团stringUtils团Test(1)团Te,tl团TestZ团丁estMain团zcsmExitsRsnun团Zc,mproductior国ZRCO一S_MKpFI国zmmBarcodecx团ZppReadBomMJUnitJUnitplug一inTestOSGiFramevvorkRemoteJavaAppli.巨巫口…一Connection砂pe:…stondord(SooketAtt。〔卜,,…1lowterminationremoteVM刁....挤而浦令J以么登…,巴CsMwebsery'c,一扣下askCon,ext下es,一片XSL万‘匡二巫三习。Fi}termatched46of67items引布妇川即r-⑦

 

 

另附:

完全可以 

 

在做远程调试时,在windows系统和非windows系统下的配置,Tomcat中会有所差别,具体如下:

 

第一步、配置tomcat

一、在windows系统中:

打开%CATALINE_HOME%/bin下的文件catalina.bat,加入下面这行:

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

 

其中address=8787是没被使用的端口号。连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试。

 

二、在非windows系统中:

还需要把% CATALINE_HOME %/bin/startup.sh中的最后一行exec "$PRGDIR"/"$EXECUTABLE" start "$@" 中的start改成jpda start。由于默认的端口是8000,所以如果8000端口已有他用的话,还需在catalina.sh文件中设置:JPDA_ADDRESS=8787

输入命令startup.sh或者catalina.sh jpda start就可启动tomcat

 

第二步、配置eclipse

在Eclipse中选择RunàDebug,在弹出的对话框中右击Remote Java Application新建一个远程调试项,如下如所示:

 

 

 

在“Name”输入框中输入远程调试的名称,在“Project”中选择要调试的项目,在“Host”中输入需要远程调试项目的IP,也就是 tomcat所在的IP,在“Port”中输入设置的端口号,比如上面设置的8787,然后钩选“Allow termination of remote VM”,点击“Apply”即可。

设置完后就可以开始调试了,大概分一下几步:

1、启动tomcat(远程),如在控制台输出“Listening for transport dt_socket at address: 8787”,即说明在tomcat中设置成功;

2、在本机设置断点,即在需要监视的代码行前双击就会出现一个小圆点;

3、进入上图界面,选择要调试的项,点击“Debug”即可进行远程调试;

4、当运行到设置了断点的代码行处即可看到如下图所示的浅绿条。

 

 

按键操作:

1、F5键与F6键均为单步调试,F5是进入本行代码中执行,F6是执行本行代码,跳到下一行;

2、F7是跳出函数;

3、F8是执行到最后。

 

 

当然,为了方便,可以新建一个批处理文件,假如取名为debug.bat,在这个文件中加入下面几行:

 

cd %CATALINE_HOME%/bin

set JPDA_ADDRESS=8787

set JPDA_TRANSPORT=dt_socket

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

startup

 

这样需要远程调试时,运行debug.bat即可;不需要远程调试时,还是运行startup.bat文件。

 

源文档 <http://bbs.csdn.net/topics/300192498>

 



Eclipse远程调试 windows

使用Eclipse进行远程调试

 

今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言也说不明白,从以前我发表的一篇文章可以看得出来,http://blog.csdn.net/sunyujia/archive/2008/03/23/2211109.aspx我的朋友们普通反应看完后觉得不知所云,可能是我写的太简单,下面步入正题。

什么是远程调试,就是在A机器上利用Eclipse单步跟踪调试B机器上的Web应用,当然调试A机器上Web应用也是没有问题的,90%我都是调试本机的Web应用,远程调试的意义我想我不用说了,大家都会想到它的好处,你可以在本地调试非本地测试环境上的应用,这是件多么美妙的事,所以我就不说它的好处了,那么本地调试呢,我喜欢本地调试也采用下面要介绍的方法,为什么不用myeclipseWTPTomcatPlugin等。

下面我阐述下在eclipse中启动Web应用的缺陷:

我本身是非常喜欢使用MyeclipseWEB部署的,但是我不喜欢使用Myeclipse启动tomcat,当然WTP,TomcatPlugin等也不喜欢,使用Myeclipse做部署的好处就是非常灵活,不仅可以部署到Web应用里面还可以任意部署到某一指定路径下。但是使用Myeclipse启动tomcat的话,有如下问题:

a.卡,比较慢,尤其是同时启动多个应用.

b.如果断点比较多的时候例如100多个,必须把每个不需要使用的断点先禁用掉或干脆删掉,也就是说web应用启动的时候就已经决定了是debug模式还是run模式。中间不可以切换。

c.一旦eclipse死掉了,web应用也就断掉了。

d.对于程序来说相对路径,类加载路径都是和系统正式运行的情况下完全不同的(要视具体插件而论,每个插件的部署方式都不太一样),即和Web应用独立运行的相对路径和类加载环境有差异,当然熟练的老手可以轻松搞定,但是就目前国内情况看,很多初学者在这个问题上还是很苦恼的。

e.顺便说一句和本话题无关的,eclipseconsole并不能完全模拟cmd控制台,一些流操作会有问题。例如:PushbackInputStream

那么使用远程调试的方法做本地调试有什么好处呢?

a.运行速度比较好。

b.运行期间可以使用eclipse连接web应用做调试,调试完成后可以断开连接,需要调试的时候可以再重新进行连接,断点的禁用功能可能就很少派上用场了,因为相对于在debug模式和run模式间自由切换。

c.Web应用是独立运行的,不用担心eclipse死掉即玩完了。

d.从开发到上线运行,环境一直可以保持一致。

说了半天,没有使用过的人可能还是不了解,没关系,可以看完下面的,再回过头看上面的。

下面我举一个小例子介绍如何进行远程调试.

环境:tomcatEclipse,做远程调试不需要任何插件。当然可以使用MyEclipseWeb应用部署到tomcat上面,注意只是部署,一般来讲使用远程调试就不需要配置MyEclipseWeb Server了,MyEclipse在这里只起到一个copy文件的作用,好在现在Myeclipse可以随意指定目录copy了。即 Deployment 对话框中的Custom Location,在这里推荐大家一个copy文件的小插件,有了这个插件就不需要Myeclipse部署了。

FileSync plugin for Eclipsehttp://andrei.gmxhome.de/filesync/index.html这个插件的作者还写了很多其他好用的插件,大家可以顺便看下。

这次例子的源码很简单:

Jsp源码如下index.jsp

<%com.syj.test.DebugTest.test("sunyujia test");%>

HelloRemote Debug

DebugTest类的test方法中做个断点既可测试

下面按步骤进行讲解

1.web应用部署到Tomcatwebapp目录下

2.修改Tomcat/bin/startup.bat文件,在最前面加上如下代码

SETCATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

注意上面命令必须写成一行中间不能有换行,-前是空格-后是非空格,由于显示器分辨率不同,该文章在显示的时候可能会有换行的情况。

更多Web服务器远程调试参数可参见

http://blog.csdn.net/sunyujia/archive/2008/03/23/2211109.aspx

3.必须先启动Tomcat启动tomcat/bin/startup.bat参下图

4.在com.syj.test.DebugTest.test方法中设置断点

5eclipse中配置debug,配置完成后点击debug按钮。如图:

 

6.打开浏览器访问在第1步部署的web应用,访问index.jsp

7.当浏览器访问index.jsp时,由于调用了com.syj.test.DebugTest.test,又因在test方法中设置了断点,所以程序会被断点拦截,如图:

8.不需要调试的时候点击断开,需要调试的时候再点击debug,非常方便,当调试过程中出现引用非本project的源码时(例如跟踪到tomcat里面或springhibernate里面),会提示找不到源码,点击相应提示的按钮(到时候editor区只有一个按钮,所以大家就不要问哪个按钮了)可以添加源码继续调试,或在配置debug前就把需要的源码都添加上,在source选项卡里面,因为具体的基本调试这方面知识不属于本话题讨论范围内,就不过多介绍了。

远程调试就介绍到这里吧。打了这么多字还是比较辛苦的,转载请注明出处,谢谢!

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值