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

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

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

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

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

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

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

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

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

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

a.       运行速度比较好。

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

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

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

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

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

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

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

这次例子的源码很简单:

Jsp 源码如下index.jsp

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

Hello Remote Debug

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

下面按步骤进行讲解

1.    将web应用部署到Tomcat的webapp目录下

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

SET CATALINA_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方法中设置断点

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

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

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

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

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

2、在用ant可以直接将code 打包到 war 并发送到服务器,下面是一个配置:

[html] view plaincopy

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <project default="Sync2-build" name="Sync_test" basedir=".">

  3. <property file="conf/build_test.properties" />

  4. <path id="classpath">

  5. <fileset dir="${lib}" includes="**/*.jar" />

  6. <fileset dir="${tomcat_dir}/lib" includes="**/*.jar" />

  7. </path>

  8. <target name="Sync2-build" depends="make-war,scpWarToServer" description="Building wrapper">

  9. <echo message="[${project.name}] Build Completed (deploy.phase is ${deploy.phase})" />

  10. </target>

  11. <target name="src-compile" description="Compile Source">

  12. <echo message="[${project.name}] Start : Compile Source" />

  13. <mkdir dir="${dist}/classes" />

  14. <javac srcdir="${src}" destdir="${dist}/classes" encoding="${javac.encoding}" debug="${javac.debug}" debuglevel="${javac.debuglevel}">

  15. <classpath refid="classpath" />

  16. <include name="**/*.java" />

  17. </javac>

  18. <echo message="[${project.name}] Complete : Compile Source" />

  19. </target>

  20. <target name="make-war" depends="src-compile" description="Creating .war file">

  21. <echo message="[${project.name}] Start : Creating War file"/>

  22. <mkdir dir="${WebContent}/WEB-INF/classes"/>

  23. <move todir="${WebContent}/WEB-INF/classes">

  24. <fileset dir="${dist}/classes" />

  25. </move>

  26. <copy todir="${WebContent}/WEB-INF/classes">

  27. <fileset dir="${src}" excludes="**/*.java" />

  28. </copy>

  29. <copy todir="${WebContent}/WEB-INF/classes/conf" overwrite="true">

  30. <fileset dir="${configDir}" />

  31. </copy>

  32. <war destfile="${dist}/${project.war}" >

  33. <fileset dir="${WebContent}" />

  34. </war>

  35. <delete dir="${WebContent}/WEB-INF/classes"></delete>

  36. <echo message="[${project.name}] Complete : Creating War file"/>

  37. </target>

  38. <target name="scpWarToServer" description="Copy Cmpp.war to Servers">

  39. <echo message="[${project.name}] Start : SCP War file To ${IPADDR}@${IPADDR}:${targetDir}"/>

  40. <scp todir="${USERNAME}:${PASSWORD}@${IPADDR}:${targetDir}" trust="true" >

  41. <fileset dir="${dist}">

  42. <include name="${project.war}"/>

  43. </fileset>

  44. </scp>

  45. <echo message="[${project.name}] Complete : SCP War file"/>

  46. </target>

  47. </project>

转载于:https://blog.51cto.com/makeanything/1729527

使用Eclipse进行远程调试 外加 ant 直接打包到服务器相关推荐

  1. [转载]eclipse的远程调试功能配置

    原文地址:eclipse的远程调试功能配置作者:我的 用途:web应用部署并运行于外部(区别于eclipse环境中启动的)应用服务器中,当出现问题时,可以使用eclipse工程的源代码进行跟踪调试. ...

  2. tomcat开发远程调试端口以及利用eclipse进行远程调试

    一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里:  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...

  3. eclipse + pydev远程调试OpenStack

    eclipse + pydev远程调试OpenStack https://blog.51cto.com/iceyao/1753169 一.安装eclipse.PyDev插件 官方eclipse下载地址 ...

  4. eclipse进行远程调试教程,轻松搞定生产环境问题

    首先你本地Eclipse上要有和部署在远程服务器一至的项目,否则debug的时候会出现代码行错位,难以达到debug的效果.例如:如果你本地的代 码加了行,修改了,或减了一行.而远程服务器上的项目没有 ...

  5. 【Hbase】eclipse下远程调试Hbase

    1.美图 1.准备工作,安装好HABSE之后,执行hbase shell create '表名称', '列名称1','列名称2','列名称N' create '表名称','列族名称' 在HBASE中列 ...

  6. eclipse远程调试liunx下的tomcat

    项目部署到远程服务器上出现问题又缺乏日志信息的时候,特别想使用eclipse来debug查看各种信息.只要在tomcat里设置下参数重启下tomcat,就可以使用eclipse远程debug定位问题了 ...

  7. eclipse远程调试tomcat

    项目部署到远程服务器上出现问题又缺乏日志信息的时候,特别想使用eclipse来debug查看各种信息.只要在tomcat里设置下参数重启下tomcat,就可以使用eclipse远程debug定位问题了 ...

  8. grails的controller和action那点事---远程调试groovy代码

    最近由于项目需要,用到了grails,这玩意确实好用,生产率高有类型python的速度与简洁.仅第一印象,用的还不深入,说的不对请轻拍. 遇到的几个问题: 1. groovy远程调试 玩Java的应该 ...

  9. linux远程hadoop,远程调试Hadoop

    在调研JobTracker等异常问题时经常需要远程debug以实现单步跟踪.相对于打印日志,远程调试更方面更快捷,信息也更全面.这里列出远程调试的基本步骤. 1.配置jvm选项启用远程debug Ha ...

最新文章

  1. Xilinx_ISE 14.7在Win10下选择“open project”崩溃闪退的问题
  2. jvm十:类加载器解析
  3. 干货|训练神经网络时要知道的几个要点
  4. LeetCode 451. 根据字符出现频率排序(Sort Characters By Frequency)
  5. 使用jQuery实现全选、全不选、 反选(button)
  6. CUDA初探—环境配置
  7. 【Spring学习笔记-MVC-12】Spring MVC视图解析器之ResourceBundleViewResolver
  8. IDEACould not autowire. No beans of 'xxxMapper' type found.
  9. 内部收益率irr_爱心人寿心相随年金险,IRR内部收益率测算
  10. 商品展示页面html模板,CSS3电商网站商品展示窗UI模板
  11. python课程作业-贪吃蛇
  12. delphi 应用程序开发工具
  13. 计算机演示文稿操作,计算机操作与应用 PowerPoint 演示文稿的设计与制作.ppt
  14. hive两拼接字段对比,涉及到的拼接字段拼接顺序问题
  15. python爬虫抓取,免费高匿快代理 IP
  16. 火狐浏览器截图整个网页截图 截取整个网页
  17. Loadrunner执行https报错Action.c(7): Error -27778: SSL protocol error when attempting to connect with hos
  18. python爬取lol所有英雄信息
  19. nginx降权及匹配php
  20. java neon_Eclipse Neon安装指导

热门文章

  1. eclipserunas里没有选项_轻松开启“开发人员选项”,优化手机设置
  2. matlab Cartesian,Matlab - Standard Deviation of Cartesian Points
  3. JAVA如何比较两个数组是否相等?
  4. linux gfs文件系统,Linux环境下使用GFS文件系统
  5. 保密作战--在网络上隐藏自己
  6. 台式电脑一直跳一个计算机页面出来,我的电脑界面上莫名其妙的多出了好几个IE浏览器拜托各位了 3Q...
  7. mysql sql_log_bin怎么看_MySQL数据库之开启和查看mysql的bin-log日志
  8. android dialog 隐藏状态栏_Flutter-最近搞了个项目-启动页Splash,Navigator.pop无法关闭Dialog...
  9. oracle突然挂了服务全部消失,OracleService服务不见了|OracleServiceXE服务没有了
  10. UVALive - 4223(hdu 2926)