勾选Evaluate and log,可以在执行这行代码是计算表达式的值,并将结果输入到控制台。
3、再说说左边的Filters过滤,这些普通状况下不常用,复杂说下意思。
Instance filters:实例过滤,输入实例ID(如图6.5中的实例ID),但是我这里没有成功,不知道什么缘由,知道的冤家留个言。
Class filters:类过滤,依据类名过滤,异样没有成功....
Pass count:用于循环中,假设断点在循环中,可以设置该值,循环多少次后停在断点处,之后的循环都会停在断点处。
4、异常断点,经过设置异常断点,在顺序中出现需求阻拦的异常时,会自动定位到异常行。
如图6.6,点击+号添加Java Exception Breakpoints,添加异常断点。然后输入需求断点的异常类,如图6.7,之后可以在Java Exception Breakpoints里看到添加的异常断点。
我这里添加了一个PointerException异常断点,如图6.8,出现空指针异常后,自动定位在空指针异常行。
七、多线程调试
普通状况下我们调试的时分是在一个线程中的,一步一步往下走。但有时分你会发如今Debug的时分,想发起另外一个央求都无法停止了?
那是由于IDEA在Debug时默许阻塞级别是ALL,会阻塞其它线程,只要在以后调试线程走完时才会走其它线程。可以在View Breakpoints里选择Thread,如图7.1,然后点击Make Default设置为默许选项。
切换线程,在图7.2中Frames的下拉列表里,可以切换以后的线程,如下我这里有两个Debug的线程,切换另外一个则进入另一个Debug的线程。
八、回退断点
在调试的时分,想要重新走一下流程而不用再次发起一个央求?
1、首先看法下这个办法调用栈,如图8.1,首先央求进入DemoController的insertDemo办法,然后调用insert办法,其它的invoke我们且先不管,最下面的办法是以后断点所在的办法。
2、断点回退
所谓的断点回退,其实就是回退到上一个办法调用的末尾处,在IDEA里测试无法一行一行地回退或回到到上一个断点处,而是回到上一个办法。
回退的方式有两种,一种是Drop Frame按钮(图8.2),按调用的办法逐渐回退,包括三方类库的其它办法(取消Show All Frames按钮会显示三方类库的办法,如图8.3)。
第二种方式,在调用栈办法上选择要回退的办法,右键选择Drop Frame(图8.4),回退到该办法的上一个办法调用途,此时再按F9(Resume Program),可以看到顺序进入到该办法的断点处了。
但有一点需求留意,断点回退只能重新走一下流程,之前的某些参数/数据的形状曾经改动了的是无法回退到之前的形状的,如对象、集合、更新了数据库数据等等。
九、中缀Debug
想要在Debug的时分,中缀央求,不要再走剩余的流程了?
有些时分,我们看到传入的参数有误后,不想走前面的流程了,怎样中缀这次央求呢(前面的流程要删除数据库数据呢....),难道要封锁效劳重新启动顺序?嗯,我以前也是这么干的。
确切的说,我也没发现可以直接中缀央求的方式(除了封锁效劳),但可以经过Force Return,即强迫前往来避免后续的流程,如图9.1。
(责任编辑:admin)