Eclipse调试

  看了好多年博客园了,从没有自己写过。这是本人写的第一篇文章,写之前只希望本篇不会是最后一篇。

  好吧,言归正传。最近由于工作上的需要要使用Eclipse进行Java开发,其实老实说一开始用Eclipse真是各种不习惯,各种纠结不过慢慢习惯了也还好。虽然还是没有VS使用的顺手,但基本的开发也不存在问题,工具这东西主要还是看熟不熟,又跑题了。

  咳咳,程序开发当然最先要学会使用工具,工具用得好才能事半工倍。而且开发工具的使用调试功能则显得更为重要,写的代码达不到预期效果当然需要调试一番了。本文作为讲解Eclipse的调试,重点只讲解使用Eclipse进行调试的常用 方法。更高层次的调试方法(如:远程调试、热部署)以及其它调试方法(如:日志追踪分析等)则不在本文描述。

一、增加断点

  进行调试的第一步当然是增加断点,增加断点的方式很简单,只需要在断点停住的那行代码左侧双击即可,再次双击则断点消除。
  有断点的状态如下:
  
  (好精致的小圆点...)

二、启动tomcat服务选择debug模式

  断点增加完进行站点发布后,启动tomcat服务选择debug模式即可:

 

  启动完后Server视图如下:

三、调试方式

  前面两步完成后,当运行到断点时就会自动挂起程序了如下图:

  进行断点后,eclipse界面自动会自动切换到调试模式,如果需要回到代码开发模式选择又上角的Java EE即可。

  如果Debug常用视图在你的eclipse里面没有,可以通过菜单Window-ShowView-Other-Deubg下来调出来。

  下面就几种常用的视图进行讲解:

3.1 调试工具条

  调试工具条即调试代码的执行方式,工具条如下:

  

  
就是这个工具了,七个按钮做一下些讲解:
  1).该按钮会提示Resume F8。表示继续运行直到遇到下一个断点,快捷键为F8.
  2).Suspend即挂起选择的线程。一般在多程线的代码调试的时候启用,用来查看某一个线程的堆栈帧或变量 值。
  3).Terminate即中断操作。停止调试。停止后tomcat也会自动停止,网站不能访问.
  4).Disconnect,当进行远程调试时,中断与远程JVM的socket连接。
  5).Setp Into F5.即单步调试,如有方法则进入。快捷键F5
  6).Sept Over F6。单步调试,但遇到方法如果方法 内无断点则不会进行方法。快捷键F6
  7).Sept Return F7。退出当前调试方法 ,返回被调用的方法。快捷键F7

3.2 Debug View

   debug视图展示了当前调试挂起的线程的堆栈帧信息,每一个线程做为一个对节点显示。  

   

  可以进行的操作有:

  

    主要常用的功能已经在上小节讲过了(如:Setp Into、Setp Over...),下面主要讲解两个

 3.2.1 Drop To Frame

    该操作可以重新从方法的第一行开始逐步执行,而且成员变量的值及相关的操作则不会逆回如:在方法中执行了增加操作,如果Drop To Frame即会可能会继续执行增加操作,可能会造成增加失败。
    这个操作有点类似于VS里面回退执行(拖动当前执行代码挂起的标志回退到之前操作),但相对而言功能要弱很多没那么方便。

 3.2.2 Use Step Filters

    该方法可以过滤不想执行的的代码断点,可以根据包名和类名来限定。如果选择了过滤,则还需要配置过滤的类或包。
    通过 Windows -Preferences - Java - Debug -Step Filtering

 

3.3 Variables View

Variables View即变量视图会列出Debug视图中所选的堆栈帧对应的相关的变量,点击右边的值可以对变量进行更改。

  

  变量视图可择的操作有:

   

   下面讲解几个常用的操作:

    3.3.1  Change Value

    这个改变值自然不要多说,可以点击列表中去改变,也可以选择这个。选择这个会弹出一个框用来输入需要改变的值。

 3.3.2 All References

    会列出这个变量所有引用的对象

    3.3.3 All Instances 

    变量所对应的类型在当然堆栈帧上的所有实例。
    其它的自然不要多说,尝试一下就知道了。不过要记住变量显示的范围的是在Debug View选择对应的堆栈帧,如果变量值不符合预期很有可能是堆栈帧选错了。

3.4 BreakPotints View

  Breakpoints视图会显示当前工作区间下的所有断点,可以方便查询和管理工作区间下面的断点。
  
  Breakpoints视图会显示当前工作区间下的所有断点,可以方便查询和管理工作区间下面的断点。有两个操作非常有用

  3.4.1 Hit Count

        即当断点命中到指定的次数,断点才会命中。比如在for循环里面可以设定超过300次即命中断点。

  3.4.2 Conditional

        可以根据指定的变量条件来命中断点,如我们可以写一个变量值,当触发某些条件时设置一个固定值然后根据条件就能命中断点了。
    注意如果同时设置二者,如果有逻辑错误就会自动忽略。

3.5 Expressions View

  表达式视图也比较常用,比如需要监控方法 返回值,计算变量值等。但是没智能提示,但是没智能提示,但是没智能提示...
  

四、小结

  总的来讲eclipse的调试功能还是比较强大的,需要有的功能点也基本上全了,像高级一些的热布署(hot code replace HCR)也早就得到了支持(貌似VS 2013后才支持?)。开发也无非就是写代码、调代码,有时候调代码的时间可能比写代码的时间还要和。掌握各种代码调试、排查、纠错方法也当然就能很提高自己的开发能力。当然,第一次写文章,感觉真的累。

posted @ 2016-04-17 00:41  cat80  阅读(12937)  评论(1编辑  收藏  举报