Eclipse调试多线程代码,造成主线程停在断点处,而另外起的其他线程早已经跑完,无法调试子线程。

默认情况下,在调试多线程程序时,当遇到断点时(breakpoint),当前线程暂停,而其它线程继续运行。造成主线程停在断点处,而另外起的其他线程早已经跑完,无法调试子线程。

比如下面的例子:

Eclipse调试多线程代码,造成主线程停在断点处,而另外起的其他线程早已经跑完,无法调试子线程。

除第21个线程以外,其余都是Running状态。


解决方案:修改 Window->Preferences->Java->Debug,在红色区域内,将默认的Suspend Thread 改为 Suspend VM

Eclipse调试多线程代码,造成主线程停在断点处,而另外起的其他线程早已经跑完,无法调试子线程。

再调试多线程程序:

Eclipse调试多线程代码,造成主线程停在断点处,而另外起的其他线程早已经跑完,无法调试子线程。

可以看到所有线程都Suspend了。