關(guān)于ideadebug模式下線程斷點(diǎn)的總結(jié):
起因:
在使用爬蟲框架獲取頁面信息的時(shí)候,每次進(jìn)入同一個(gè)斷點(diǎn)的時(shí)候得到的內(nèi)容不是相同的,很是費(fèi)解。了解了一番知道了因?yàn)閱恿硕嗑€程。而一般的的斷點(diǎn)只攔截了其中某個(gè)線程。為了方便查看每個(gè)線程進(jìn)入斷點(diǎn)時(shí)的情況,經(jīng)過一番詢問和百度之后才發(fā)現(xiàn)有線程斷點(diǎn)這一說,深覺自己以前一直沒有發(fā)現(xiàn)斷點(diǎn)的真正用法。
斷點(diǎn)介紹:

如圖所示,斷點(diǎn)可以為所有斷點(diǎn)和線程斷點(diǎn),每種斷點(diǎn)還可以設(shè)置條件,條件滿足時(shí)才會進(jìn)入該斷點(diǎn)。
1.當(dāng)設(shè)置為All的時(shí)候

點(diǎn)擊下發(fā)的下拉框,可以看到此時(shí)攔截到兩個(gè)線程,切換的時(shí)候右側(cè)的值也會出現(xiàn)相應(yīng)的變化。但是當(dāng)點(diǎn)擊next之后,這個(gè)斷點(diǎn)就結(jié)束了。而我之前用的最多最熟悉的的也是這種,每一個(gè)斷點(diǎn)走完了也就沒了,想再次進(jìn)入的時(shí)候只能再次調(diào)用該斷點(diǎn)所在的方法。
2.當(dāng)設(shè)置為thread之后

當(dāng)?shù)谝淮芜M(jìn)入斷點(diǎn)時(shí),可以在下方清楚的看到thread-0 ,表示進(jìn)入了第一個(gè)線程,與All的情況相同。點(diǎn)擊下方的下拉框依舊會出現(xiàn)第二個(gè)線程,當(dāng)切換到第二個(gè)線程的時(shí)候可以清楚地看到右方輸出的結(jié)果不同。

但如果再點(diǎn)擊next的時(shí)候,它仍舊停留在該斷點(diǎn)。但是下方變成了thread-1,并且thread-0這個(gè)線程不再下方的下拉框中,如下圖所示:

所以當(dāng)設(shè)置超過一個(gè)線程的的時(shí)候點(diǎn)擊next,就會發(fā)現(xiàn)又進(jìn)入了一次斷點(diǎn)。直到所有的線程都走完,斷點(diǎn)才會結(jié)束。這樣會很清楚地看到有斷點(diǎn)在不同線程時(shí)的狀態(tài)。
3.設(shè)置帶條件的斷點(diǎn),
當(dāng)發(fā)起多次請求的時(shí)候,有時(shí)候想要看到某條數(shù)據(jù)進(jìn)入該斷點(diǎn)時(shí)的狀態(tài),就可以在設(shè)置斷點(diǎn)的時(shí)候,右擊并在condition輸入框中輸入進(jìn)入該斷點(diǎn)時(shí)的條件,不管是多線程還是單線程的斷點(diǎn),都只會在符合條件的時(shí)候才會進(jìn)入。減少了調(diào)試的時(shí)間,可以直接快速的達(dá)到調(diào)試的效果。