九个技巧:java
最先开始用eclipse的debug的时候,只会F5 F6 F7 F8,甚至F7都不是很搞的明白是怎么用的,那时候资浅,碰不到须要复杂debug的代码,慢慢工做深刻了,场景碰多了,就须要各类debug技巧来提高定位bug效率,之前找人帮忙排查问题,看他开各类窗口debug各类溜甚是羡慕嫉妒恨,慢慢久病成医本身也用溜了eclipse的一些主要的debug技巧。稍做整理分享出来。web
F5678这四个基本技能就略过不说了,可是最基本的技能能解决90%问题,因此虽然略过不说 ,可是必须用的很溜,相信园友达人们这四个确定比我用的溜的多。express
1. 逻辑结构windows
逻辑结构主要用来展现map之类的collection数据结构存储的值的,它只展现存储值的逻辑部分,而屏蔽了数据结构详细的内部结构,更方便咱们查看map之类collection结构里存储的值,推荐使用。服务器
这个按钮就是展现逻辑结构的按钮,下面两个图,上图是不展现逻辑结构,下图是展现逻辑结构,很明显,下图的结构可读性更强,能够专一于debug的变量。数据结构
2. 条件debugapp
条件debug用在须要知足某种条件才会触发断点的场景,好比只有id是12345这条记录会有问题,那就当id等于12345时才触发断点,其余都放过。eclipse
右击断点选择断点属性,就能看到这样一个配置框,右边的文本区块能够填写条件代码,好比id==12345,因为每次都要作这个判断,若是循环数很大的话,仍是有点点慢的,你能够去上个厕所接个水啊什么的,仍是很方便的。jvm
3. 异常断点ui
异常断点只要用在debug某种异常的时候,能够配置当这个异常出现后才触发断点,不须要debug去寻找异常。
点击这个红圈就能弹出异常断点的窗口,会列出你系统里的全部异常类,而后选择须要断点的异常就OK。
4. 单步过滤
单步过滤的场景是咱们在使用F5来跟到某个方法内部的时候,常常会跟到一些咱们肯定不须要看的方法内部。
this.getTradeDetail(uid, itemStr.subString(0,5))
好比这行代码,想F5进入getTradeDetail内部,会首先执行itemStr.subString方法,会先进入subString方法,而这方法是jdk的String方法,肯定没问题,不须要关心,单步过滤就是跳过这些咱们想忽略的方法直接到目标方法内部的一种debug技巧。
在Window > PreferencesJava > Debug > Step Filtering 设置过滤器, 能够选择须要过滤掉的包和类。同时要确保你在debug视图中启用了单步过滤,以下图。这样在使用单步调试的时候,就会使用到这个过滤功能。
上图是过滤器配置,典型的就是把jdk的一些类和包配置过滤。下图是要在debug时候开启单步过滤,不然不生效。
5. 跳到帧
跳到帧是一种重入技巧,在debug时,eclipse能够直接跳到调用栈中指定的任意桢,而且使JVM在此处从新运行。这使你能够从新运行你的部分代码,而不须要为了调试以前的代码而从新来一次。
要注意的是:已经被修改的变量不会被重置,它们会保留当时的值。
使用方式:选择调用栈中的一桢,点击按钮“跳到桢”
6. Inspect
inspect用来查看某个表达式的之,对于变量值debug很容查看,可是对于一个表达式的值就不容易查看,仍是这句:
this.getTradeDetail(uid, itemStr.subString(0,5))
想看getTradeDetail的值,就无法想看变量值同样(虽然这个颇有多是赋值给一个变量...),要看这种表达式值,就须要inspect,具体作法是选中这行表达式,而后右击->inspect,或者更方便的快捷键组合:ctrl+shift+i,会弹出以下的展现表达式结果的框:
7. expressions
expressions窗口也是用来看变量或者表达式的值的,在windows->show viewz中打开expression窗口,而后在里面添加你想观察的表达式,好比仍是这句:
this.getTradeDetail(uid, itemStr.subString(0,5))
而后debug的时候,就能看到被添加的表达式结果了,另外也能根据须要改value的值。
8. display
display也是用来观察和修改变量or表达式的,这个应该用的人比较多,在windows->show viewz中打开display窗口,能够在display窗口里写表达式,而后右击选择display运行查看结果或者ctrl+shift+D快捷键组合,表达式能够是程序中一行代码或者你本身写的一个赋值语句来改变变量值之类的。
9. 远程debug
远程debug能够用来调试远程服务器上的代码,保证你本地代码和远程部署的代码是一致,就能够经过这种方式debug服务器代码,这个是java web开发的一大利器,不然定位服务器问题简直是灾难。
远程debug须要服务器端启动jvm的时候作一些开启和端口的配置,具体的配置网上不少,搜一下便可。而后在本地的debug configuration中双击添加一个remote java application,填写远程主机的host和配置的debug端口,就能够开始debug了,以下图: