关于ideadebug模式下线程断点的总结:
起因:
在使用爬虫框架获取页面信息的时候,每次进入同一个断点的时候得到的内容不是相同的,很是费解。了解了一番知道了因为启动了多线程。而一般的的断点只拦截了其中某个线程。为了方便查看每个线程进入断点时的情况,经过一番询问和百度之后才发现有线程断点这一说,深觉自己以前一直没有发现断点的真正用法。
断点介绍:
如图所示,断点可以为所有断点和线程断点,每种断点还可以设置条件,条件满足时才会进入该断点。
1.当设置为All的时候
点击下发的下拉框,可以看到此时拦截到两个线程,切换的时候右侧的值也会出现相应的变化。但是当点击next之后,这个断点就结束了。而我之前用的最多最熟悉的的也是这种,每一个断点走完了也就没了,想再次进入的时候只能再次调用该断点所在的方法。
2.当设置为thread之后
当第一次进入断点时,可以在下方清楚的看到thread-0 ,表示进入了第一个线程,与All的情况相同。点击下方的下拉框依旧会出现第二个线程,当切换到第二个线程的时候可以清楚地看到右方输出的结果不同。
但如果再点击next的时候,它仍旧停留在该断点。但是下方变成了thread-1,并且thread-0这个线程不再下方的下拉框中,如下图所示:
所以当设置超过一个线程的的时候点击next,就会发现又进入了一次断点。直到所有的线程都走完,断点才会结束。这样会很清楚地看到有断点在不同线程时的状态。
3.设置带条件的断点,
当发起多次请求的时候,有时候想要看到某条数据进入该断点时的状态,就可以在设置断点的时候,右击并在condition输入框中输入进入该断点时的条件,不管是多线程还是单线程的断点,都只会在符合条件的时候才会进入。减少了调试的时间,可以直接快速的达到调试的效果。