默認情況下,Eclipse斷點只掛起一個線程。這導致應用程序繼續運行時,我正在考慮斷點。如何在Eclipse中掛起VM斷點後恢復所有線程?
這是斷點的另一種模式 - 掛起整個虛擬機。這會停止所有線程,但顯然我無法恢復執行,或者恢復時的執行行爲不同。
是否有可能在Eclipse中的斷點上進行正常掛起?
UPDATE
有絕對不是我的問題,但是Eclipse/JVM /其他人的錯誤。我做了一個簡單的例子,沒有任何線索的互動:
package tests;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Try_EclipseMultithreadedBreakpoint {
private static final Logger log = LoggerFactory.getLogger(Try_EclipseMultithreadedBreakpoint.class);
public static class Thread1 extends Thread {
public Thread1() {
setName("Thread1");
}
@Override
public void run() {
for(int i=0; i<10; ++i) {
log.info("tick {}", i);
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
}
}
}
}
public static class Thread2 extends Thread {
public Thread2() {
setName("Thread2");
}
@Override
public void run() {
for(int i=0; i<15; ++i) {
log.info("tick {}", i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}
}
public static void main(String[] args) {
new Thread1().start();
new Thread2().start();
}
}
後來我把一個異常進入第二個線程(線程2):
然後,我有幾個斷點命中和恢復,然後刪除斷點並恢復,並吊死申請。
下面是它的懸掛狀態:
爲您輸出看,螺紋1沒有恢復。它只打印一個刻度並停止。而且它並不等待Eclipse報告的一些監視器,它已被暫停。
請注意,我並沒有設置線程1任何斷點,我只在線程2
將它們同時,一些「終結」線程正在等待一些內部資源。
另外,我注意到,在斷點擊中之後,我需要在恢復之前多次按下恢復。
這是併發的性質所示 - 「行爲不同」。但沒有[你的確切問題](http://stackoverflow.com/help/mcve)的描述,這將很難幫助你。 – ursa 2014-12-07 18:25:25
所以你肯定它會因爲cuncurrency的性質而掛起,bun不是由於Eclipse的bug或者什麼的?如果併發性做得好,那麼應該斷點好吧? – 2014-12-08 12:10:08
@ursa看到我的更新請 – 2014-12-08 12:34:57