Suz*_*ioc 2 java eclipse debugging jvm
默认情况下,Eclipse断点仅挂起一个线程。当我考虑断点时,这将导致应用程序继续运行。
这是断点的另一种模式-挂起整个VM。这将停止所有线程,但显然我无法恢复执行或恢复时执行行为有所不同。
是否可以在Eclipse中对断点进行正常的挂起?
更新
绝对不是我的问题,而是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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后我将异常放入第二个线程(Thread2):

然后我几乎没有断点命中和恢复,然后删除了断点并恢复了,应用程序挂起了。
下面是挂起状态:

从输出中可以看到,线程1没有恢复。它只打印了一个刻度并停止了。而且它不等待Eclipse报告的某些监视器,它已挂起。
请注意,我没有在线程1中设置任何断点,而仅在线程2中设置了它们。
同时,一些“最终确定者”线程正在等待一些内部资源。
另外,我注意到,在达到断点后,我必须多次按resume才能真正恢复。
| 归档时间: |
|
| 查看次数: |
2339 次 |
| 最近记录: |