本文是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 Java Exception 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调试java程序的九个技巧

使用 Eclipse 调试 Java 程序的 10 个技巧

Debug—Eclipse断点调试基础(二)

Eclipse调试(2)——各种类型断点设置的更多相关文章

  1. Eclipse 调试Bug之使用断点的七大技巧

    原文链接:http://xiaohuafyle.iteye.com/blog/1705494 调试竟然有这么多技巧,亏我以前竟不知道...   Eclipse这个开发工具为我们调试bug提供了非常便利 ...

  2. Eclipse调试(1)——基础篇

    作为使用Eclipse的程序员都会使用它的Debug.但是有不少人只会用F6.F8,其他功能知之甚少.今天我就来总结一下我在使用eclipse的debug时的一些个人经验.水平有限,不足之处还请赐教. ...

  3. Chrome 中的 JavaScript 断点设置和调试技巧 (转载)

    原文地址:http://han.guokai.blog.163.com/blog/static/136718271201321402514114/ 你是怎么调试 JavaScript 程序的?最原始的 ...

  4. eclipse调试断点【转载】

    该片博文是转载他人的博客,原博客地址:http://blog.csdn.net/maritimesun/article/details/7815903 作为开发人员,掌握开发环境下的调试技巧十分有必要 ...

  5. eclipse调试断点

    1.条件断点 如果你不知道如何添加断点,只需点击左边面板(行号前面)断点即被创建.在调试界面中,“断点”视图会把所有被创建的断点列出来.我们可以给它加一个布尔条件,也就是说,该断点会被激活并且如果布尔 ...

  6. Keil 的调试命令、在线汇编与断点设置

    上一讲中我们学习了如何建立工程.汇编.连接工程,并获得目标代码,但是做到这一 步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能 发现并解决,事实上,除了极简单的程序以外 ...

  7. [原创]GDB调试指南-断点设置

    前言 上篇<GDB调试指南-启动调试>我们讲到了GDB启动调试的多种方式,分别应用于多种场景.今天我们来介绍一下断点设置的多种方式. 为何要设置断点 在介绍之前,我们首先需要了解,为什么需 ...

  8. javascript断点设置和调试

    JS调试必备的5个debug技巧http://www.jb51.net/article/47812.htm Chrome 中的 JavaScript 断点设置和调试技巧http://www.xuebu ...

  9. Eclipse调试Bug的七种常用技巧(转)

        注意事项及小结: (1)Line Breakpoint:如果设置Conditional,监控的变量需要比当前行高一级block,譬如for(int i=0;i<20;i++)中的i,fo ...

随机推荐

  1. PAT 1082. 射击比赛 (20)

    本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟.我们假设靶心在原点(0,0). 输入 ...

  2. [LeetCode] Design Log Storage System 设计日志存储系统

    You are given several logs that each log contains a unique id and timestamp. Timestamp is a string t ...

  3. XMLHTTPRequestObject获取服务器数据

    http://www.educity.cn/develop/526316.html 在Web客户端使用xmlhttp对象,可以十分方便的和服务器交换数据,我们可以获取和发送任何类型的数据,甚至二进制数 ...

  4. Centos常用命令之:正则表达式

    我们知道,正则表达式可以大大的提高我们的工作效率. 在了解正则表达式之前,我们需要了解,通配符的概念. 在linux中,我们在使用ls这个命令的时候经常会使用下面这种用法 [fuwh@localhos ...

  5. [SDOI2008]Sue的小球

    题目描述 Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩蛋,Sue有一 ...

  6. POJ2449 Remmarguts' Date

    "Good man never makes girls wait or breaks an appointment!" said the mandarin duck father. ...

  7. 内存管理——linux内核学习

    买了<深入Linux内核架构>这本书准备了解一下linux内核机制.但是最开始看了十几页感觉看着很累,本来都准备弃了 过了段时间看见一个面经有linux内核的内容,于是就照着那个先把内存管 ...

  8. 浙大patB习题的一点总结

    嘛嘛,patB的习题已经结束了,这些基本上没有啥特别难的,但还是有几道特别坑爹的题(o(╯□╰)o),还是把这些题的代码打包上传吧.

  9. 华科机考:N阶楼梯上楼

    时间限制:1秒空间限制:32768K 题目描述 N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入描述: 输入包括一个整数N,(1<=N<90). 输出描 ...

  10. Delphi 日期时间函数

    DateUtils.IncYear();DateUtils.IncMonth();DateUtils.IncWeek();DateUtils.IncDay();DateUtils.IncHour(); ...