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的用法,这里可以设置条件和执行次数。

            

    天助自助者
  • 相关阅读:
    【CANoe基础】CANoe常用操作
    ZedGraph控件横纵坐标显示中文名(转)
    Winforn中设置ZedGraph曲线图的属性、坐标轴属性、刻度属性(转)
    c# 访问sqlite资源
    混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
    ABP框架资源
    vue新建项目一直在downloading template转,最后超时
    vscode(实验)--ABP框架 .net core 版本的安装与运行(vue模板)(转)
    安装-打开-运行-ABP框架(asp.net core 2.X+Vue)运行前端(转)
    VSCode打开Visual Studio的ABP框架项目(转)
  • 原文地址:https://www.cnblogs.com/ZeGod/p/10112997.html
Copyright © 2011-2022 走看看