zoukankan      html  css  js  c++  java
  • Eclipse的Debug(一)

    本文链接:https://blog.csdn.net/u011781521/article/details/55000066

           http://blog.csdn.net/u010075335/article/details/51222493

    系列文章

    Eclipse的Debug(一)

    Eclipse的Debug各种视图介绍(二)

    Eclipse的debug按钮介绍(三)

    一个简单的Eclipse调试Debug流程(四)

    三个Eclipse下的Debug的使用场景(五)

    本文目录

      一、Debug视图

      二、断点类型及断点窗口

    一、Debug视图

    调试中最常用的窗口是:

    窗口说明
    Debug窗口 主要显示当前线程方法调用栈, 以及代码行数(有调试信息的代码)
    断点Breakpoints窗口 => 断点列表窗口,可以方便增加断点,设置断点条件,删除断点等
    变量Variables窗口 => 显示当前方法的本地变量,非static方法,包含this应用,可以修改变量值
    代码编辑窗口 => 这个不用多说了
    输出Console窗口 => 日志等输出内容,调试时,可以将关注的组件级别设置低一点,以便获得跟多输出信息

     

    另外辅助的窗口有:

    窗口说明
    表达式expression窗口 => 写上自己需要观察的数据的表达式,或者修改变量值
    Display窗口 => 可以在display中执行代码块,输出内容等
    大纲Outline窗口 => 查看当前类的方法,变量等
    类型层级Type hierarchy窗口 => 查看当前所在类的继承层次,包括实现接口,类继承层次
    方法调用关系Call hierarchy窗口 => 查看当前方法被哪些方法调用,调用方法在哪些类中、第几行,可以直接打开对应的方法
    搜索结果Search窗口 => 结合快捷键可以查看变量、方法等在工作空间、项目、工作集中被引用或定义的代码位置

    1)窗口全览:

    二、断点类型及断点窗口

    在调试中可以设置的断点类型有五种: 行断点(line breakpoints),方法断点(method breakpoints ),观察断点(watch breakpoints-成员变量访问变更),异常断点(exception breakpoints), 类加载断点(class load breakpoints)。每种断点的设置有些许不一样,可以在断点上右键->Breakpoint properties进行设置,但一般在断点窗口有快速设置的界面,Breakpoint properties中多了filter, 其实比较鸡肋,用处不大。

      还有一个小技巧是条件断点,有的时候我们还有这样的需要,就是我并不想一行一行的执行代码,比如一个for循环会循环1000多遍,我只想在第500遍的时候让线程挂起进行调试,这个时候我们可以使用条件断点。如何设置请看下面的介绍

    断点相关的快捷键:

     快捷键       说明
    ctrl+alt+b 忽略所有断点
    Alt+shift+q, b                   激活断点窗口
    ctrl+shift+b 在光标处大断点/取消断点                                                                                                                                                                                                                                                                                                    

    1、行断点:  在方法中的某一行上打断点1.1、1.4。

    • 行断点可以设置挂起线程/VM的条件1.3,访问次数1.2。     
    • 1.3中的条件是,spring在注册Bean定义(registerBeanDefinition)时,如果是org.springframework.demo.MyBean,就挂起线程,可以开始单步调试了。     
    • 对于命中次数(hit count)1.2的使用,一般是在循环中,第N个对象的处理有问题,设置hit count = N, 重调试时,可以方便到达需要调试的循环次数时,停下来调试。

    2、方法断点:在方法上打断点2.1、2.2。

    • 方法断点的好处是可以从方法方法进入或者退出时2.3,停下来调试,类似行断点,而且只有行断点和方法断点有条件和访问次数的设置功能。     
    • 但是方法断点还有另外一个好处,如果代码编译时,指定不携带调试信息,行断点是不起作用的,只能打方法断点。     
    • 有兴趣的可以通过A1将Add line number… 前的勾去掉, 调试下看看。

    line_and_method_breakpoints

    3、观察断点: 在成员变量上打的断点3.1、3.3。

    • 只有对象成员变量有效果,静态成员变量不起作用。     
    • 可以设置变量被访问或者设置的时候挂起线程/VM 3.2,也就是类似3.4的所有对成员变量的访问或者设置的方法都会被监控到

    4、异常断点: 异常断点可以通过4.6添加,或者点击日志信息中输出的异常类信息添加。     

    • 异常断点4.1,系统发生异常时,在被捕获异常的抛出位置处或者程序未捕获的异常抛出处4.2、4.4, 挂起线程/VM, 也可以指定是否包括异常的子类也被检测4.3、4.5。     
    • 另外除了以上正常设置的异常挂起,从java->debug中可以设置挂起执行,主要有下面两个:
      • ①、是否在发生全局未捕获时挂起(suspend execution on uncaught exceptions),调试时,老是有异常挂起影响调试,但是没有设置异常断点的情况,就可以勾选掉这个选项;
      • ②、是否在编译错误时挂起,一般在边调试边改代码时会发生这种情况;

    另外要提一个的是有main方法启动的应用,可以在调试配置中勾选stop in main A3, 程序进入时,会挂起线程,等待调试。

    watch_and_exception_breakpoints 

    5、类加载断点: 在类名上打的断点5.1。

    • 接口上是打不了类加载断点的,但是抽象类是可以的,只是在调试的时候,断点不会明显进入classloader中,单步进入只会进入到子类的构造方法中,非抽象类在挂起线程后单步进入就会到classloader中(如果没有filter过滤掉的话)5.3。
    • 类加载断点不管是打在抽象或者非抽象类上,都会在类第一次加载或者第一个子类第一次被加载时,挂起线程/VM 5.2。

       6、条件断点

       设置条件断点:我们可以给该断点设置触发条件,一旦满足某条件是才开始调试,可以在断点处点击鼠标右键,选择Breakpoint Properties进入断点设置页面,刚刚在讲断点视图的时候我们学到过Hit Count和Conditional的用法,这里可以设置条件和执行次数。

            

    天助自助者
  • 相关阅读:
    新概念第二册(1)--英语口语听力课1
    外企面试课程(一)---熟悉常见的缩略词
    公司 邮件 翻译 培训 长难句 结课
    workflow
    公司 邮件 翻译 培训 长难句 20
    公司 邮件 翻译 培训 长难句 19
    Engineering Management
    公司 邮件 翻译 培训 长难句 18
    公司 邮件 翻译 培训 长难句 17
    第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
  • 原文地址:https://www.cnblogs.com/ZeGod/p/10112997.html
Copyright © 2011-2022 走看看