Eclipse调试(2)——各种类型断点设置
本文是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)——各种类型断点设置的更多相关文章
- Eclipse 调试Bug之使用断点的七大技巧
原文链接:http://xiaohuafyle.iteye.com/blog/1705494 调试竟然有这么多技巧,亏我以前竟不知道... Eclipse这个开发工具为我们调试bug提供了非常便利 ...
- Eclipse调试(1)——基础篇
作为使用Eclipse的程序员都会使用它的Debug.但是有不少人只会用F6.F8,其他功能知之甚少.今天我就来总结一下我在使用eclipse的debug时的一些个人经验.水平有限,不足之处还请赐教. ...
- Chrome 中的 JavaScript 断点设置和调试技巧 (转载)
原文地址:http://han.guokai.blog.163.com/blog/static/136718271201321402514114/ 你是怎么调试 JavaScript 程序的?最原始的 ...
- eclipse调试断点【转载】
该片博文是转载他人的博客,原博客地址:http://blog.csdn.net/maritimesun/article/details/7815903 作为开发人员,掌握开发环境下的调试技巧十分有必要 ...
- eclipse调试断点
1.条件断点 如果你不知道如何添加断点,只需点击左边面板(行号前面)断点即被创建.在调试界面中,“断点”视图会把所有被创建的断点列出来.我们可以给它加一个布尔条件,也就是说,该断点会被激活并且如果布尔 ...
- Keil 的调试命令、在线汇编与断点设置
上一讲中我们学习了如何建立工程.汇编.连接工程,并获得目标代码,但是做到这一 步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能 发现并解决,事实上,除了极简单的程序以外 ...
- [原创]GDB调试指南-断点设置
前言 上篇<GDB调试指南-启动调试>我们讲到了GDB启动调试的多种方式,分别应用于多种场景.今天我们来介绍一下断点设置的多种方式. 为何要设置断点 在介绍之前,我们首先需要了解,为什么需 ...
- javascript断点设置和调试
JS调试必备的5个debug技巧http://www.jb51.net/article/47812.htm Chrome 中的 JavaScript 断点设置和调试技巧http://www.xuebu ...
- Eclipse调试Bug的七种常用技巧(转)
注意事项及小结: (1)Line Breakpoint:如果设置Conditional,监控的变量需要比当前行高一级block,譬如for(int i=0;i<20;i++)中的i,fo ...
随机推荐
- 简述angular自定义过滤器在页面和控制器中的使用
首先设置自定义过滤器. 定义模块名:angular ? 1 2 3 4 5 6 .module('myApp') .filter('filterName',function(){ return fun ...
- 在CentOS 7+ 安装Kubernetes入门
TL;DR; 科学上网,科学上网,科学上网,重要的事情说三次.如果不会科学上网,这篇文章就没有看下去的意义.作为一个技术人员如果不愿意折腾,很难有所作为.作为一个单纯的技术人员,最好把心思放在技术上, ...
- Xshell实现Windows上传文件到Linux主机
我是怎么操作的: 1.打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面:(经常第一步都不顺利,无法挂载Windows的文件 ...
- 如何设计一款APP,才能吸引用户眼球
有APP分析机构研究表明,人们每天耗费在手机和平板上的平均时长为158分钟,其中127分钟是耗费在各类APP中,而仅有31分钟是花费在浏览网页上.随着人们对互联网的依赖性越来越强,移动APP发展迅速已 ...
- java设计模式之单例设计模式和多例设计模式
单例设计模式:构造方法私有化,在类的内部定义static属性和方法,利用static方法来取得本类的实例化对象:无论外部产生多少个实例化对象,本质上只有一个实例化对象 饿汉式单例设计 class Si ...
- vue中自定义组件(插件)
vue中自定义组件(插件) 原创 2017年01月04日 22:46:43 标签: 插件 在vue项目中,可以自定义组件像vue-resource一样使用Vue.use()方法来使用,具体实现方法: ...
- Java必须了解的“递归”与“IO流”!!!
>>>First: 递归! 1. 定义: 在函数自身内部,调用函数本身的方式,称为递归. 2. 注意: 递归包括递进去.归出来两步. 首先,依次执行[函数调自身语句]上半部分的代码, ...
- hdu 5868 Polya计数
Different Circle Permutation Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K ...
- 51nod 1364 最大字典序排列(线段树)
1364 最大字典序排列基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 给出一个1至N的排列,允许你做不超过K次操作,每次操作可以将相邻的两个数交换,问能够得到的字 ...
- poj 2888 Magic Bracelet(Polya+矩阵快速幂)
Magic Bracelet Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 4990 Accepted: 1610 D ...