【问题标题】:How to stop other threads stealing focus when debugging in Eclipse?在 Eclipse 中调试时如何阻止其他线程窃取焦点?
【发布时间】:2010-11-13 11:17:35
【问题描述】:

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

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

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

有没有人以前见过这个并且知道我可以更改的任何解决方法或设置?

【问题讨论】:

    标签: eclipse debugging


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 似乎积极的影响没有持续,我回来了,暂停的线程失去了焦点:-(
      • 这里也一样,持续一段时间(更长)直到有什么东西再次把它踢出来。
      【解决方案3】:

      如果上述方法没有帮助,您可以在调试时禁用所有断点。

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          在 Preferences 的 Run/Debug 下,有一个名为(类似于)在遇到断点时激活调试视图的选项。如果取消选中该选项,Eclipse 不会将焦点跳转到调试视图。它还可能阻止单个线程窃取焦点。

          【讨论】:

            猜你喜欢
            • 2015-09-26
            • 1970-01-01
            • 2011-03-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-05
            • 2011-02-18
            相关资源
            最近更新 更多