java中的debug的使用方法,Eclipse中debug的使用技巧

在使用Eclipse调试Java代码过程中,自己多数情况下仅限于打断点-》调试两个动作。某然发现Eclipse提供了更高阶的一些调试方法,在此记录下来免得自己遗忘,顺便分享。

336545e2ac65e9ca99774710a5338bfc.png

【图1】

1,行断点——Hit count

在循环或者递归等代码块中可以使用hit count在到达指定次数时暂停线程(或虚拟机)。这在调试一些到达指定次数出错的情况时很有用,比如代码一般运行到十次之后开始出现怪异的错误。用例代码如下:

public static void main(String[] args)

{

int i = 0;

for(; i < 99; i++)//breakpoint is here

{

System.out.println(String.format("Current times is %s .", i));

}

}

当打印输出到:Current times is 49 .的时候断点会自动停止。

2,行断点——condition

设置断点condition的方法:右键单击断点->breakpoint properties->condition,在输入框中输入指定的条件。还以上述代码为例,选择当i >= 60的时候开始触发断点。如下图所示,当代码运行到Current times is 60 .的时候开始停止,并在此之后由于条件一直满足所以不断触发中断。

e58ddb2614a830ec154cf4d52e1d0c5c.png

【图2】

除了普通的Java语句(line point),Ecplise还提供了针对类加载(ClassLoading)断点、监视断点(watchpoint,打在类的内部变量上)、异常断点、方法断点,不同类型的断点有不同的触发条件设置。

3,类加载断点

打在Class上的断点只有hit count选项。默认情况下只有类首次加载的时候会触发中断,使用hit count的机会应该很少,也许可用在调试不同的ClassLoader加载同一个类的情况。

4,监视断点

1474ce558351d7ab896383c4e76d0bf1.png【图3】

打在类的变量或静态变量上,选项包括hit count、Access、Modification。其中Access或Modification至少需要选中一项才可能会在访问或修改变量值时触发中断。hit count作用自然是在第几次的时候触发中断。

5,异常断点

5e2d2e739826e9ce3f0fefd54af90fe0.png

【图4】

异常断点可以通过Breakpoints视图的Add Java Exception Breakpoint按钮添加,在方法抛出指定的异常的时候会触发中断。可选项包括Caught locations、Uncaught locations、Subclass of this exception分别对应捕获、未捕获、为当前Exception的子类的时候触发中断。在Debug模式下Eclipse会在抛出异常时自动中断,这里的异常断点是指存在多层调用的时候往往原始的异常已经被catch或者封装成其它的异常,通过异常断点可以在原始异常抛出和被捕获的时候中断。

需要注意的是Eclipse默认会在抛出未捕获的异常时中断,所以取消Uncaught locations时看起来是没有效果的,抛出的异常仍然会触发中断。可以通过window-》preferences-》java-》debug取消suspend on uncaought exception的选项,此时只有在勾选了Uncaught locations时才会触发中断。

6,方法断点

f19ae081024fefbfb6ac000c5fd460ae.png

【图5】

方法异常可以在进入或离开方法时触发中断,默认情况下会在进入方法时触发中断,通过勾选Exit可以在方法结束时触发中断。

预告后面发布的内容,以鞭策自己不能偷懒,立证在此不写丢人:会在本周内至少发布一篇关于JUnit使用的深入介绍,并在后续完成JUnit原码赏析的博客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值