调试SWT应用程序会导致所有GTK应用程序冻结

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

因为这只发生在断点位于事件处理程序中时,我非常怀疑SWT在事件循环中阻塞导致所有内容都冻结。 我的猜测是,SWT有一些神奇的参数来“分离”应用程序,所以我可以正常调试,但我找不到它。

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

我见过人们尝试使用-Dsun.awt.disablegrab=true 。 我不知道这是否有效。

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

PW

虽然只是使用标准的Swing组件并使用本地调试,但我一直使用Linux mint 11和JRE 1.6.0.xx来解决这个问题。 当在事件处理程序中遇到断点时,x11似乎完全冻结,我需要删除一个shell来杀死java进程。

设置-Dsun.awt.disablegrab=true可以解决我的问题。

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