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

问题描述

| 我有一个SWT应用程序,可以通过Eclipse中的远程调试来调试。如果在SWT应用程序的事件处理程序中设置断点,则Hole桌面将冻结。我仍然可以通过Strg + Alt + Fx切换到文本控制台。如果我从控制台取消了SWT应用程序,那么一切将继续工作。 由于这仅在断点位于事件处理程序内部时发生,因此我高度怀疑SWT会在事件循环中阻塞,从而导致一切冻结。我的猜测是,SWT有一些魔术参数可以“隔离”应用程序,因此我可以正确调试,但是找不到它。     

解决方法

        这是本机小部件具有X指针抓取功能而不释放它的一个已知问题。最常见的解决方法是在另一个显示器上运行内部日食。我之所以使用Xvnc,是因为我一直都遇到此问题,但是其他示例是XNest。 我见过人们尝试使用
-Dsun.awt.disablegrab=true
。我不知道那行不通。 请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id=20006,以详细讨论该问题以及人们尝试了什么。 PW     ,        我反复使用带有JRE 1.6.0.xx的Linux Mint 11遇到此问题,尽管仅使用标准的Swing组件并使用本地调试。当在事件处理程序中达到断点时,x11似乎完全死机了,我需要放下一个外壳来杀死Java进程。 设置
-Dsun.awt.disablegrab=true
为我解决了这个问题。 我只是为调试配置设置了虚拟机参数,我想对于远程调试,您需要确保使用命令行上的此VM选项(或启动)来启动远程应用程序,而不是启动该应用程序在IDE调试配置中或使用此选项启动Eclipse。