关于Idea的debug模式下线程断点的总结:
断点介绍:
如图所示,断点可以为所有断点和线程断点,每种断点还可以设置条件,条件满足时才会进入该断点。
1.当设置为All的时候
点击下发的下拉框,可以看到此时拦截到两个线程,切换的时候右侧的值也会出现相应的变化。但是当点击next之后,这个断点就结束了。而我之前用的最多最熟悉的的也是这种,每一个断点走完了也就没了,想再次进入的时候只能再次调用该断点所在的方法。
2.当设置为thread之后
当第一次进入断点时,可以在下方清楚的看到thread-0 ,表示进入了第一个线程,与All的情况相同。点击下方的下拉框依旧会出现第二个线程,当切换到第二个线程的时候可以清楚地看到右方输出的结果不同。
但如果再点击next的时候,它仍旧停留在该断点。但是下方变成了thread-1,并且thread-0这个线程不再下方的下拉框中,如下图所示:
所以当设置超过一个线程的的时候点击next,就会发现又进入了一次断点。直到所有的线程都走完,断点才会结束。这样会很清楚地看到有断点在不同线程时的状态。
3.设置带条件的断点,
当发起多次请求的时候,有时候想要看到某条数据进入该断点时的状态,就可以在设置断点的时候,右击并在condition输入框中输入进入该断点时的条件,不管是多线程还是单线程的断点,都只会在符合条件的时候才会进入。减少了调试的时间,可以直接快速的达到调试的效果。
禁止所有断点:
在调试的过程中,不知道哪个断点有问题。某行代码有bug,想跳过所有的断点,
点击之后断点从红色变成灰白色,按F9之后所有的断点都跳过去,不会停下
条件断点
假设在这打断点,需要字符串s满足内容为张三才进行断点
就会出来一个条件窗口
输入java表达式
字符串s满足内容为张三才进行断点
设置了之后,满足条件会停留,