zoukankan      html  css  js  c++  java
  • 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后才支持?)。开发也无非就是写代码、调代码,有时候调代码的时间可能比写代码的时间还要和。掌握各种代码调试、排查、纠错方法也当然就能很提高自己的开发能力。当然,第一次写文章,感觉真的累。

  • 相关阅读:
    转载-----nodejs内存定位
    node内存泄露排查转载
    git使用规范
    git的使用方法
    Sublime Text 3最好的功能、插件和设置
    Appium-Python-Windows环境搭建笔记
    MPI Note
    先装VS2008之后,又装了2013,然后启动VS2008提示“Tools Version”有问题?
    SQLite 编译错误
    WPF异常捕获三种处理 UI线程, 全局异常,Task异常
  • 原文地址:https://www.cnblogs.com/cat80/p/eclipse-debugging-beginning.html
Copyright © 2011-2022 走看看