本文链接: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… 前的勾去掉, 调试下看看。

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, 程序进入时,会挂起线程,等待调试。

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

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

  6、条件断点

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

Eclipse的Debug(一)的更多相关文章

  1. RCP:eclipse的DEBUG机制

    Eclipse debug文档翻译 运行一个程序需要添加launch configurable,在自定义launch configuration的时候会指定模式,比如run,debug,profile ...

  2. eclipse tomcat debug启动慢

    myeclipse或eclipse下debug模式启动很慢,默认模式也是debug,网上找了终于解决, 原因是有eclipse或myeclipse启动debug时自动添加断点,所以必须删除一些东西. ...

  3. JAVA基础学习之IP简述使用、反射、正则表达式操作、网络爬虫、可变参数、了解和入门注解的应用、使用Eclipse的Debug功能(7)

    1.IP简述使用//获取本地主机ip地址对象.InetAddress ip = InetAddress.getLocalHost();//获取其他主机的ip地址对象.ip = InetAddress. ...

  4. Eclipse 的 Debug 介绍与技巧【转载】

    没有任何程序员能够一气呵成的写出没有任何 Bug 的代码,所以很多程序员有相当一部分时间是花费在 Debug 上的,程序调试是每个程序员必须面对的工作.如何使用 Eclipse 进行有效的.尤其是高效 ...

  5. eclipse远程debug

    由于一般比较正规项目,都会有好几个版本,有时候在测试版本的时候,一切都好好的,然后提交到其他版本之后会有各种各样的问题,这个时候如果不能快速准确的定位到问题,那么我们就需要用 eclipse远程deb ...

  6. Eclipse 的 Debug 介绍与技巧

    转载: Eclipse 的 Debug 介绍与技巧

  7. [转]在Eclipse中Debug 为什么显示source not found

    在Eclipse中Debug 为什么显示source not found http://zhidao.baidu.com/link?url=-jna2HB_k2FW72GPbT--5Qg2AWi3Ip ...

  8. 在Eclipse下debug 出现Source not found for ...

    在Eclipse下debug 出现Source not found for ... 在Eclipse下调试Servlet出现了Source not found for XxxAction.execut ...

  9. Eclipse中debug调试java代码一直报Source not found的解决办法

    今天使用eclipse的debug调试代码,一直没法正常调试,一按F6就提示Source not found 根据提示发现可能是另一个项目影响了,所以把另一个项目Close Project,这次直接t ...

  10. Eclipse 中 Debug 时鼠标悬停无法查看变量值

    问题描述:Eclipse在Debug模式下,当鼠标移动到某个变量上面时不自动显示该变量对应的值. 解决方法:在Eclipse中点击 Window->Preferences->Java-&g ...

随机推荐

  1. Count on a tree 树上区间第K小

    Count on a tree 题意:求路径 u到v上的 第k小的权重. 题解:先DFS建数, 然后对于每个节点往上跑出一颗主席树, 然后每次更新. 查询的时候, u, v, k, 找到  z = l ...

  2. js获取一个月的天数

    在使用其他语言获取每月天数的时候,一般都是存储到一个数组中进行获取,但是如果是二月份的话就需要首先判断是否闰年,再确定是28还是29了. js可以通过Date对象很方便的获取到每月的天数,在初始化Da ...

  3. Go语言获取系统性能数据gopsutil库

    psutil是一个跨平台进程和系统监控的Python库,而gopsutil是其Go语言版本的实现.本文介绍了它的基本使用. Go语言部署简单.性能好的特点非常适合做一些诸如采集系统信息和监控的服务,本 ...

  4. 在VMware中就显示lo回环IP:127.0.0.1的解决办法。

    在VMware时由于某些原因导致,在使用ifconfig只会显示lo,不显示其他的东西 步骤:1.sudo lshw -numeric -class network 2.sudo route -nv ...

  5. MySQL单标查询

    一 单表查询的语法 #查询数据的本质:mysql会到你本地的硬盘上找到对应的文件,然后打开文件,按照你的查询条件来找出你需要的数据.下面是完整的一个单表查询的语法 select * from,这个se ...

  6. 亮剑.NET第二章

    第二章主要讲解C#中各种让人模糊不清的概念,用法,类型等等. 1.Equals()与==区别 当比较两个值类型时,二者基本一致,当比较引用类型时,==比较的是引用类型的地址是否一致,即两个引用是否指向 ...

  7. 操作DOM会影响WEB应用的性能

    平时在工作中,要优化自己开发的WEB应用的性能,一般是遵循以下几个原则: 1.减少网络请求. 2.压缩.合并静态资源文件,以此来减轻网络传输的带宽压力和资源消耗. 3.代码逻辑层面上的性能优化.比如减 ...

  8. Java String 对象,你真的了解了吗?

    String 对象的实现 String对象是 Java 中使用最频繁的对象之一,所以 Java 公司也在不断的对String对象的实现进行优化,以便提升String对象的性能,看下面这张图,一起了解一 ...

  9. Mac搭建pyhton+selenium+pycharm实现web自动化测试

    安装pip或者安装pip3: sudo easy_install pip 二选一安装 sudo easy_install python3-pip 安装selenium: sudo pip3 insta ...

  10. 【linux】【sonarqube】安装sonarqube7.9

    前言 SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量. 通过插件形式,可以支持众多计算机语言,比如 java, C#, go,C/C++, PL/SQL, Cobol ...