我正在调试在Eclipse 3.4.1中运行的服务器进程。大约有20个线程,睡觉后以不同的间隔醒来。
我在一个线程上的一个方法中设置了断点,Eclipse正确地停在那里。在Debug视图中使用堆栈跟踪扩展线程,我可以使用各种按钮逐步执行。这就是我所期待的。
我的问题是,当我单步执行时,似乎另一个正在运行的线程被唤醒时,它会在Debug视图中窃取焦点。我的暂停线程不再被选中或扩展(它旁边有一个+)并且所有按钮都被禁用。我必须单击挂起的线程继续调试。
有没有人见过这个,知道我可以改变的任何变通办法或设置?
答案 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将不会将焦点跳转到调试视图。它也可能会阻止个别线程窃取焦点。