【问题标题】:Debugging an SWT application causes all GTK application to freeze调试 SWT 应用程序会导致所有 GTK 应用程序冻结
【发布时间】:2011-09-04 22:31:22
【问题描述】:

我有一个 SWT 应用程序,我通过 Eclipse 中的远程调试进行调试。如果我在 SWT 应用程序的事件处理程序中设置断点,我的桌面会冻结。我仍然可以通过 Strg+Alt+Fx 切换到文本控制台。如果我从控制台中终止 SWT 应用程序,一切都会继续工作。

由于这只发生在断点位于事件处理程序内部时,我高度怀疑 SWT 会阻塞事件循环,从而导致一切冻结。我的猜测是,SWT 有一些神奇的参数可以“分离”应用程序,所以我可以正确调试,但我找不到。

【问题讨论】:

  • 我在 Ubuntu 下尝试调试 Swing 应用程序时遇到了同样的问题。如果我在调试模式下转到 Swing 处理程序(例如渲染方法),该应用程序和我的调试器 (Eclipse) 将冻结。
  • 关闭总是导致gnome桌面不稳定的compiz怎么样?

标签: java eclipse swt


【解决方案1】:

我在使用带有 JRE 1.6.0.xx 的 Linux mint 11 时反复遇到此问题,尽管只是使用标准 Swing 组件并使用本地调试。当在事件处理程序中遇到断点时,x11 似乎完全冻结了,我需要进入 shell 以终止 java 进程。

设置-Dsun.awt.disablegrab=true 为我解决了这个问题。

我只是为调试配置设置了 VM 参数,我想对于远程调试,您需要确保远程应用程序是在命令行上使用此 VM 选项启动的(或者它已启动),而不是在IDE 调试配置或使用此选项启动 Eclipse。

【讨论】:

    【解决方案2】:

    本机小部件具有 X 指针抓取但未释放它是一个已知问题。最常见的解决方法是在另一个显示器上运行您的内部日食。我使用 Xvnc 是因为我一直遇到这个问题,但其他例子是 XNest

    我见过人们尝试使用-Dsun.awt.disablegrab=true。不知道行不行。

    请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id=20006,详细讨论该问题以及人们尝试过的方法。

    私服

    【讨论】:

    • 我已经阅读了错误讨论并尝试了一些建议的解决方案 - 它们都没有奏效。我想我们必须忍受它。
    • 直到现在我一直认为两个屏幕是解决卡顿的唯一方法。也见bugs.sun.com/view_bug.do?bug_id=6714678。这必须传播给全世界!
    猜你喜欢
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    相关资源
    最近更新 更多