我有一个SWT应用程序,我在eclipse中通过远程调试进行调试。如果我在SWT应用程序的事件处理程序中设置断点,那么我的桌面会冻结。我仍然可以通过 Strg + Alt + Fx 切换到文本控制台。如果我从控制台中杀死SWT应用程序,一切都会继续工作。
由于这只发生在断点位于事件处理程序中时,我非常怀疑SWT在事件循环中阻塞导致所有内容都冻结。我的猜测是,SWT有一些神奇的参数来“分离”应用程序,所以我可以正常调试,但我找不到它。
答案 0 :(得分:9)
本地小部件具有X指针抓取而不释放它是一个已知问题。最常见的解决方法是在另一个显示器上运行您的内食。我使用 Xvnc 因为我一直遇到这个问题,但其他例子是 XNest 。
我见过有人尝试使用-Dsun.awt.disablegrab=true
。我不知道这是否有效。
请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id=20006,详细讨论问题以及人们尝试过的内容。
PW
答案 1 :(得分:0)
我使用Linux mint 11和JRE 1.6.0.xx反复出现这个问题,尽管只使用标准的Swing组件并使用本地调试。当在事件处理程序中遇到断点时,x11似乎完全冻结,我需要删除一个shell来杀死java进程。
设置-Dsun.awt.disablegrab=true
为我解决了问题。
我只是为调试配置设置了VM参数,我想对于远程调试,您需要确保远程应用程序是在命令行上使用此VM选项启动的(或者它已经启动)而不是IDE调试配置或使用此选项启动Eclipse。