在Eclipse中调试时如何阻止其他线程窃取焦点?

时间:2009-07-23 16:51:09

标签: eclipse debugging

我正在调试在Eclipse 3.4.1中运行的服务器进程。大约有20个线程,睡觉后以不同的间隔醒来。

我在一个线程上的一个方法中设置了断点,Eclipse正确地停在那里。在Debug视图中使用堆栈跟踪扩展线程,我可以使用各种按钮逐步执行。这就是我所期待的。

我的问题是,当我单步执行时,似乎另一个正在运行的线程被唤醒时,它会在Debug视图中窃取焦点。我的暂停线程不再被选中或扩展(它旁边有一个+)并且所有按钮都被禁用。我必须单击挂起的线程继续调试。

有没有人见过这个,知道我可以改变的任何变通办法或设置?

5 个答案:

答案 0 :(得分:9)

您可以暂停整个Java VM,而不仅仅是执行线程,以解决焦点问题。

在断点视图中选择一个断点,然后选择“Suspend VM”而不是“Suspend Thread”。在Preferences-> Java-> Debug下,您可以将“Suspend VM”设置为默认选项。

答案 1 :(得分:3)

如果上述方法无效,则可以在调试完毕后始终禁用所有断点。

断点视图中:Ctrl-A,右键单击 - >禁用

答案 2 :(得分:3)

调试Play!Framework 2应用程序时遇到了同样的问题。似乎最终解决了它的是取消选中Java - >在调试透视图/线程视图面板上下文菜单中监视。

答案 3 :(得分:1)

您可以使用该选项在断点处停止所有线程吗?

答案 4 :(得分:0)

不确定这是否可行(尚未安装Eclipse安装),但您可以尝试使用调试选项。

在“首选项”中的运行/调试下,有一个名为(例如)的选项在遇到断点时激活调试视图。如果取消选中该选项,Eclipse将不会将焦点跳转到调试视图。它也可能会阻止个别线程窃取焦点。