本文是Eclipse调试(1)——基础篇 的提高篇。分两个部分: 
1) Debug视图下的3个小窗口视图:变量视图、断点视图和表达式视图 
2) 设置各种类型的断点

变量视图、断点视图和表达式视图

1. variable:

变量视图显示debug过程中程序中出现的所有的变量以及其值。我们也可以通过该视图手动设置变量的value。手动设置变量值的作用在于,当debug到该变量处时,没有得到我们预期的值,为了能让我们的debug按照预期的方式继续走下去(如变量满足一定条件才能走到某一个特定的分支中去),我们可以设置变量值为预期的值,达到测试目的。 


2. Breakpoints:

断点视图显示程序中的所有断点。我们可以通过这个视图设置断点的类型,挂断条件等。还可以选择skip哪些断点以及删除断点。本文之后的部分将对断点的设置做更详细的讲解。 


3. Expressions:

表达式视图可以增加一些自己感兴趣的表达式,观察其值。也可以选中表达式,使用“Ctrl + Shift +i”快捷键在debug代码中查看其值,或者右键–>Inspect。 


断点设置

1. 普通行断点

在代码的某一行最左侧双击就设置了一个普通行断点。程序debug运行到该行就会在此断点处暂停。删除该断点可以再次双击,也可以在断点视图中删除。在断点视图中也可以设置是否跳过断点。 


2. 行断点-条件断点(Hit Count Conditional)

条件断点有两种:Hit Count和Conditional。设置方法为:①可以在断点视图中选定某个断点,然后在视图下方设置;②也可以选中某个断点后右击–>Breakpoint Properties…中设置。 
Hit Count断点适用于测试循环时,在循环到第N次此断点处时,程序停止。Hit Count断点只会停止一次。 
Conditional断点是设置一个条件表达式,设置当该条件表达式为true或者条件表达式的值改变时程序停止。Conditional断点只要条件满足就会停止。 


3. 异常断点

异常断点可以通过Breakpoints视图的Add JavaException Breakpoint按钮添加,在方法抛出指定的异常的时候会触发中断。可选项包括Caught locations、Uncaught locations、Subclass of this exception分别对应在代码中捕获了该异常时、未捕获该异常时、抛出的异常为当前Exception的子类时触发中断。 
需要注意的是Eclipse默认会在抛出未捕获异常时自动中断,所以取消Uncaught locations时看起来没有任何效果,抛出的异常仍然会触发中断。可以通过window–>preferences–>Java–>debug取消Suspend execution on uncaught exceptions选项来使Uncaught locations生效。但不建议这样做。 


4. 方法断点

方法断点打在方法声明的第一行处。默认情况下在进入该方法时线程中断,可以选择Entry或Exit选择在方法进入或方法退出时中断。 


5. 监视断点(watchpoint)

监视断点是设置在类的实例变量或者静态变量上的。断点的条件有Access、Modification、Hit count。其中,Access和Modification必须至少选择一个。Hit count是可选的。当选择Access或Modification时,每次变量被访问或者变量都修改,在被访问或修改处都会中断。如果还选择了Hit count,则会在变量被访问或者修改的第N次中断一次。 
 


单步过滤

单步过滤的场景是我们在使用F5来跟到某个方法内部的时候,经常会跟到一些我们确定不需要看的方法内部。 
this.getTradeDetail(uid, itemStr.subString(0,5)) 
比如这行代码,想F5进入getTradeDetail内部,会首先执行itemStr.subString方法,会先进入subString方法,而这方法是jdk的String方法,确定没问题,不需要关心,单步过滤就是跳过这些我们想忽略的方法直接到目标方法内部的一种debug技巧。 
在Window > PreferencesJava > Debug > Step Filtering 设置过滤器, 可以选择需要过滤掉的包和类。同时要确保你在debug视图中启用了单步过滤,如下图。这样在使用单步调试的时候,就会使用到这个过滤功能。 
上图是过滤器配置,典型的就是把jdk的一些类和包配置过滤。下图是要在debug时候开启单步过滤,否则不生效。 
 

显示逻辑结构

显示逻辑结构按钮可以让变量以更好的逻辑结构展示出来,提高可读性。如下图所示: 
 

Eclipse断点种类的更多相关文章

  1. Eclipse断点调试

    转自:http://blog.csdn.net/maritimesun/article/details/7815903 作为开发人员,掌握开发环境下的调试技巧十分有必要.去年就想把关于Eclipse断 ...

  2. 【转载】Eclipse 断点调试

      作为开发人员,掌握开发环境下的调试技巧十分有必要.去年就想把关于Eclipse断点调试总结下了,由于对时间的掌控程度仍需极大提高,结果拖到今年才写了此篇博文.关于Java调试技术还有很多,如Jav ...

  3. eclipse 断点调试方法

    1 Debug视图 1.1 线程堆栈视图 线程堆栈视图表示当前线程的堆栈,从中可以看出在运行哪些代码,并且整个调用过程,以及代码行号.分别介绍一下这几个按钮的含义.从左至右分别为: 1.表示当前实现继 ...

  4. 详解Eclipse断点

    原文链接:http://www.blogjava.net/jiangshachina/archive/2011/11/20/364367.html 大家肯定都用过Eclipse的调试的功能,在调试的过 ...

  5. 转:详解Eclipse断点

    详解Eclipse断点(原) 详解Eclipse断点 大家肯定都用过Eclipse的调试的功能,在调试的过程中自然也无法避免要使用断点(breakpoint),但不知是否对Eclipse中各类断点都有 ...

  6. eclipse 断点找到同名的其它类

    转载自Eclipse断点进入另一个项目的同名Java文件中(http://tunps.com/p/11789.html) eclipse 断点找到同名的其它类 A和B是两个相同的项目,A一直本地,B是 ...

  7. Eclipse断点调试方法

    1. 条件断点 断点大家都比较熟悉,在Eclipse Java 编辑区的行头双击就会得到一个断点,代码会运行到此处时停止. 条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才 ...

  8. eclipse 断点使用深入技能

    原文:http://blog.jobbole.com/26435/ 摘要:调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程 ...

  9. eclipse 断点调试快捷键

    (1)Ctrl+M --切换窗口的大小(2)Ctrl+Q --跳到最后一次的编辑处(3)F2 --当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标移开时Tooltip还会显示即Show Too ...

随机推荐

  1. 《C专家编程》读书笔记之第8~11章

    八.为什么程序员无法分清万圣节和圣诞节 1. 整形提升是指char,short int和位段类型(无论signed或unsigned)以及枚举类型将被提升为int或unsigned int(如果int ...

  2. String类基础的那些事!

    第三阶段 JAVA常见对象的学习 第一章 常见对象--String类 (一) String 类的概述及其构造方法 (1) 概述 多个字符组成的一串数据,例如 "abc" 也可以看成 ...

  3. 【转贴】内存重要参数详解 RAS CAS

    内存重要参数详解 RAS CAS 分类: LINUX 2014-09-12 09:41:58 原文地址:内存重要参数详解 RAS CAS 作者:Reny http://blog.chinaunix.n ...

  4. Redis提供的持久化机制

    Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却十分迅速. 近日,Redis的作者在博客中写到, ...

  5. dubbo分布式服务框架-study2

    本文开始对springboot+dubbo集成,使用的版本为springboot 2.0.0.dubbo 2.0.0,步骤如下: 1.添加依赖: <dependency> <grou ...

  6. 17.tmux相关

    Linux终端复用神器-Tmux使用梳理 Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权.使用它最直观的好处就是,通过一个终端登录远程主机并运行tm ...

  7. nginx浏览器开启密码验证

    如果我们在 nginx 下搭建了一些站点,但是由于站点内容或者流量的关系,我们并不想让所有人都能正常访问,那么我们可以设置访问认证.只有让用户输入正确的用户名和密码才能正常访问.效果如下: 在 ngi ...

  8. Go的包管理工具(一)

    在前面转载了系列文章:Golang 需要避免踩的 50 个坑,总得来说阅读量都挺大.今天这篇文章,咱们一起聊聊Go的依赖包管理工具. 背景 每一门语言都有其依赖的生态,当我们使用Java语言的时候,使 ...

  9. Java多线程(十):BlockingQueue实现生产者消费者模型

    BlockingQueue BlockingQueue.解决了多线程中,如何高效安全"传输"数据的问题.程序员无需关心什么时候阻塞线程,什么时候唤醒线程,该唤醒哪个线程. 方法介绍 ...

  10. UEditor编辑器

    1.UEditor编辑器官网:http://ueditor.baidu.com/website/ 2.下载文件:选择  1.4.3.3 .Net版本 UTF-8板 3.建一个ueditor文件夹,将下 ...