Eclipse调试技术

来源:互联网 发布:剑桥商务英语 知乎 编辑:程序博客网 时间:2024/05/17 07:23
在编写程序过程中,调试是一个非常重要的环节,甚至有人这样说:“程序是调试出来的,而不是写出来的。”
尽管有些偏激,但认真揣摩,也不无道理。你是不是经常遇到,写一个程序只要5分钟,而调试却花了半个小时甚至2个小时。也有人说,“调试是一门艺术”。常常遇到一个bug,调试了半天都没搞定,于是只好请各“高手”过来指点指点,而他却5分钟就搞定。于是惊叹之余,不免会问,你怎么调试得这么快?其实调试是需要技巧的,当然经验可以帮助你快速的定位问题。调试也是一门很深的学问,因语言、系统、工具等很多方面。而本文只是介绍一些eclipse相关的调试技术,并给出了一些相关的有用文章。

1 Java应用程序的调试
在调试项目之前,要保证项目能够正常编译和运行。打开需要调试的类,光标移至有效的代码行,打开菜单[Run]->Toggle Line Breakpoint来设置,你也可以使用快捷键[Ctrl+Shift+B]设置断点,最方面的就是在代码左边的空白栏处双击即可,这时会出现一个带尾巴的圆圈表示断点。然后开始调试,在工具栏Run->Debug as->Java Application,或者菜单[Run]->Debug as->Java Application,这样就会切换到调试模式视图。你可以单步跟踪,进入函数内部,跳出等方式来执行,可以观察变量的值等,层层深入到内部去分析。

2 远程调试
对于J2EE这样的项目,远程调试就成为一个非常重要的手段了。为了使用Java Dugger,需要设置JPDA端口(默认为1044)。默认的JPDA选项为:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044。transport=dt_socket 表示通过端口号1044来连接服务器。这种方式可以在Weblogic、WebSphere、JBoss、Tomcat等服务器下调试,其方法大多相似。

3 Tomcat下的Web应用调试
对于Tomcat,除了远程调试以外,还可以借助插件。Sysdeo Tomcat Plugin插件,是一款非常好用的Tomcat插件。使用它就可以调试项目了。至于安装就非常简单了,不再介绍。需要说明的是,如果安装后没有看到插件,可以设置eclipse的-clean启动参数。另外,我在设置Tomcat时,发现启动Tomcat后控制台会出现乱码的情况(我使用的Eclipse是英文,中文可能不会有问题)。如果遇到这种情况,需要在Tomcat->JVM Settings的Bootclasspath添加rt.jar和charsets.jar。注意,Tomcat 4.x和5.x版本的Context声明位置也会有所不同。我使用的是5.5.20版本,Context声明目录为${TOMCAT_HOME}/conf/Catalina/localhost。在建立好Java Project后,并将class编译到web/WEB-INF/classes目录下。
假设位置存放在C:/app/,其目录结构为:

  
                    /
                    |----src
                    |----lib
                    |----web
                          |--WEB-INF
                               |
                               |---classes


在${TOMCAT_HOME}/conf/Catalina/localhost新建一Context文件,内容可以参考manager.xml,大体如下:

<Context path="/app" docBase="C:/app/web" 
  reloadable="true" debug="0" >

  <Logger className="org.apache.catalina.logger.FileLogger"
             prefix="localhost_app_log." suffix=".txt"
          timestamp="true"/>

</Context>


完成后,在eclipse中启动tomcat,如果在控制台看到诸如Server startup in xxxx ms,则表示启动成功。这样就可以进行调试了。

4 Maven项目的调试
注明:这里说的Maven是指Maven2。对于Maven项目,可以使用maven-jetty-plugin。
为了使用jetty,需要在pom.xml中作如下声明。


设置好后,可以在CMD运行mvn jetty:run来检查。关于更多maven-jetty-plugin的配置,可以参考Jetty Wiki。

在完成上面的设置后,开始下面的配置。
1) 打开菜单[Run]->Debug...,新建一个Java Application Launch。设置Main class:org.codehaus.classworlds.Launcher。
2) 在Arguments,设置Program arguments: jetty:run(不是jetty6:run)。
设置VM arguments to "-Xmx512M -Dclassworlds.conf=[MAVEN_HOME]/bin/m2.conf -Dmaven.home=[MAVEN_HOME]"
(MAVEN_HOME填写你系统的实际安装位置)。
3) 在Classpath,删掉user entries下的application,并添加[MAVEN_HOME]/core/boot/classworlds-1.1.jar。这里用的是maven-2.0.5版本,2.0.6会有所不同。
4) 在Source,添加需要调试的项目。

这样,运行后,即可调试了。

5 JUnit的调试
打开Debug perspective,选择一个JUnit test case。选择[Run]->Run AS->JUnit Test。然后再打开[Run]->Debug As->JUnit Test,设置好断点后,就像Java Application那样进行调试了。

A 参考资料
1) 使用 Eclipse 平台进行调试
2) Remote Debugging with Eclipse
3) Debugging JUnit Tests in Eclipse
4) Jetty Document
5) Debugging maven web application with eclipse
6) Debugging a Java Program with Eclipse
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 比你入职晚的同事比你厉害怎么办 nba篮球大师能力值满了怎么办 做什么都觉得很累没有兴趣怎么办 剧烈运动后头晕恶心想吐怎么办 剧烈运动完头晕恶心想吐怎么办 小孩头部摔到地上想吐头晕怎么办 肺部化疗恶心反胃怎么办吃什么药好 好久没运动一运动全身酸痛怎么办 怀孕两个月了一直吐没体力怎么办 公务员审查六级口语证丢了怎么办 农资经营如果被执法查处了怎么办? 干隧道测量坚持不下去该怎么办 老家房子强拆没钱做没钱补怎么办? 魔兽世界出了两个一样的传说怎么办 死亡事故后遇上不讲理家属怎么办 死亡事故后死亡者家属不讲理怎么办 住的地方治安乱混混多怎么办 使命召唤进去感觉动作好慢怎么办 40岁后不够硬不持久怎么办 如果别人毁灭了你的梦想怎么办 如果死者托梦说自己过的不好怎么办 吵架了老婆跑回娘家不回家了怎么办 和老婆吵架她跑回娘家了怎么办 鞋子里面的皮穿的都是泥怎么办 绝地求生手游模拟器键位不灵怎么办 我更新目录的时候目录不存在怎么办 如果别人欠我钱不还 我该怎么办 老婆欠信用卡的钱我该怎么办 我欠了很多钱我该怎么办 一个人欠我钱跑了我该怎么办 买房子时间长了成危楼了怎么办 别人欠我钱人找不到了怎么办 欠银行信用卡钱人失踪了怎么办 欧洲卡车模拟2没油了怎么办 蓝牙安装包里没有微信怎么办 腾讯手游模拟器玩全军出击卡怎么办 手游cf用模拟器画面很抖怎么办 腾讯手游助手模拟器游戏卡死怎么办 腾讯手游模拟器提示注册以满怎么办 手游绝地求生被检测成模拟器怎么办 腾讯手游助手模拟器内存不够怎么办