Eclipse 调试技巧
条件断点
顾名思义,是指当发生某种情况或者触发某种条件的情况下命中断点。常用的情形就是for循环中某个变量为xx值的时候命中断点类似的。
做法1:在debug视图中,BreakPoint View将所有断点都列出来,添加一个boolean类型的条件来决定断点是否被跳过。如果条件为真,在断点处程序将停止,否则断点被跳过,程序继续执行;
做法2:在需要断点的行号前鼠标单击或者F9增加断点,然后右键properties,选择conditional,选择断点条件命中断点。
观察断点
当一个选定的属性被访问或者被更改的时候程序执行暂停,并进行debug。
做法1:在类中声明成员变量的语句行号左边双击,就可以加入一个观察点。
异常断点
在断点view中:像J!的按钮可以添加一个基于异常的断点。
做法1:当NullPointerException抛出的时候程序暂停,我们可以这样:
Drop to frame
重新跳到当前方法的开始处重新执行,并且所有上下文变量的值也回到那个时候。不一定是当前方法,可以点击当前调用栈中的任何一个frame跳到那里(除了最开始的那个frame)。主要用途是所有变量状态快速恢复到方法开始时候的样子重新执行一遍,即可以一遍又一遍地在那个你关注的上下文中进行多次调试(结合改变变量值等其它功能),而不用重来一遍调试到哪里了。当然,原来执行过程中产生的副作用是不可逆的(比如你往数据库中插入了一条记录)。
图片如下:选中旁边的那个。
Step filtering
当我们在调试的时候摁F5将进入方法的内部,但这有个缺点有的时候可能会进入到一些库的内部(例如JDK),可能并不是我们想要的,我们可以在Preferences中添加一个过滤器,排除指定的包。
其它常见的还有:
- Debug的时候,在Variables View中改变其中变量的值;
- 在Edit Conriguration对话框中添加环境变量
- F5-Step Into:移动到下一步,如果当前的行是一个方法调用,将进入这个方法的第一行。(可以通过第九条来排除);
- F6-Step Over:移动到下一行。如果当前行有方法调用,这个方法将被执行完毕返回,然后到下一行。
- F7-Step Return:继续执行当前方法,当当前方法执行完毕的时候,控制将转到当前方法被调用的行。
- F8-移动到下一个断点处。