您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    只需学会它,再多Bug也不怕(3)
    时间:2019-07-16 21:19 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    勾选Evaluate and log,可以在执行这行代码是计算表达式的值,并将结果输入到控制台。


    [图6.2]

    只需学会它,再多Bug也不怕


    [图6.3]

    3、再说说左边的Filters过滤,这些普通状况下不常用,复杂说下意思。

    Instance filters:实例过滤,输入实例ID(如图6.5中的实例ID),但是我这里没有成功,不知道什么缘由,知道的冤家留个言。

    Class filters:类过滤,依据类名过滤,异样没有成功....

    Pass count:用于循环中,假设断点在循环中,可以设置该值,循环多少次后停在断点处,之后的循环都会停在断点处。


    [图6.4]
    [图6.5]

    4、异常断点,经过设置异常断点,在顺序中出现需求阻拦的异常时,会自动定位到异常行。

    如图6.6,点击+号添加Java Exception Breakpoints,添加异常断点。然后输入需求断点的异常类,如图6.7,之后可以在Java Exception Breakpoints里看到添加的异常断点。

    我这里添加了一个PointerException异常断点,如图6.8,出现空指针异常后,自动定位在空指针异常行。


    [图6.6]
    [图6.7]
    [图6.8]

    七、多线程调试

    普通状况下我们调试的时分是在一个线程中的,一步一步往下走。但有时分你会发如今Debug的时分,想发起另外一个央求都无法停止了?

    那是由于IDEA在Debug时默许阻塞级别是ALL,会阻塞其它线程,只要在以后调试线程走完时才会走其它线程。可以在View Breakpoints里选择Thread,如图7.1,然后点击Make Default设置为默许选项。

    只需学会它,再多Bug也不怕


    [图7.1]

    切换线程,在图7.2中Frames的下拉列表里,可以切换以后的线程,如下我这里有两个Debug的线程,切换另外一个则进入另一个Debug的线程。


    [图7.2]

    八、回退断点

    在调试的时分,想要重新走一下流程而不用再次发起一个央求?

    1、首先看法下这个办法调用栈,如图8.1,首先央求进入DemoController的insertDemo办法,然后调用insert办法,其它的invoke我们且先不管,最下面的办法是以后断点所在的办法。


    [图8.1]

    2、断点回退

    所谓的断点回退,其实就是回退到上一个办法调用的末尾处,在IDEA里测试无法一行一行地回退或回到到上一个断点处,而是回到上一个办法。

    回退的方式有两种,一种是Drop Frame按钮(图8.2),按调用的办法逐渐回退,包括三方类库的其它办法(取消Show All Frames按钮会显示三方类库的办法,如图8.3)。

    第二种方式,在调用栈办法上选择要回退的办法,右键选择Drop Frame(图8.4),回退到该办法的上一个办法调用途,此时再按F9(Resume Program),可以看到顺序进入到该办法的断点处了。

    但有一点需求留意,断点回退只能重新走一下流程,之前的某些参数/数据的形状曾经改动了的是无法回退到之前的形状的,如对象、集合、更新了数据库数据等等。


    图[8.2]
    图[8.3]
    图[8.4]

    九、中缀Debug

    想要在Debug的时分,中缀央求,不要再走剩余的流程了?

    有些时分,我们看到传入的参数有误后,不想走前面的流程了,怎样中缀这次央求呢(前面的流程要删除数据库数据呢....),难道要封锁效劳重新启动顺序?嗯,我以前也是这么干的。

    确切的说,我也没发现可以直接中缀央求的方式(除了封锁效劳),但可以经过Force Return,即强迫前往来避免后续的流程,如图9.1。

    (责任编辑:admin)