我在IntelliJ IDEA中调试时出现问题,它在javafx应用程序中的侦听器中的断点处以调试模式挂起。我试图增加堆空间,但它没有帮助。也许有人也有这样的问题,拜托,建议我该怎么做。
答案 0 :(得分:43)
将其设置为VM参数:
-Dsun.awt.disablegrab=true
当调试器暂停时,它会拖放拖放,并在屏幕上留下一个神器 - 但它会让你调试。每当你阻止JavaFX线程时都会发生这种情况。
答案 1 :(得分:1)
这可能发生的原因很简单:应用程序在桌面上有锁,例如模态对话框或弹出菜单或打开菜单。然后它在断点处停止。这通知IDE。现在,IDE尝试在您的桌面上执行某些操作,但由于应用程序仍然锁定整个桌面,因此无法执行此操作 - >死锁。
您可以使用Chronon之类的工具来记录整个程序,并让您在时间轴上来回移动。
最后一个选项是记录或改为poor man's debugger(System.out
)。
[编辑]
很难用System.out检查20个参数中哪个不相等。
实际上非常简单:
System.out.println("check");
if(!a1.equals(b2)) System.out.println(a1+"!="+b1);
然后复制最后一行。这样,只有当某些内容真正感兴趣时才会输出(而不是19个相等的参数)。如果无法区分aX
与aY
(即两者都是true
),请在输出中添加一些模式:
if(!a1.equals(b2)) System.out.println("a1:"+a1+"!="+b1);