在 java fx 应用程序中的断点时,IDE 在调试模式下挂起

2022-09-01 15:12:12

我在IntelliJ IDEA中调试时遇到了一个问题,它在javafx应用程序中的侦听器中的断点处以调试模式挂起。我试图增加堆空间,但这无济于事。也许有人也有这样的问题,请建议我该怎么做。


答案 1

将其设置为 VM 参数:

-Dsun.awt.disablegrab=true

它会搞砸拖放,并在调试器暂停时在屏幕上留下一个项目 - 但它会让你进行调试。每当您阻止 JavaFX 线程时,就会发生这种情况。


答案 2

发生这种情况的原因很简单:应用程序在桌面上有一个锁,例如模式对话框或弹出窗口或打开的菜单。然后,它在断点处停止。这将通知 IDE。现在,IDE 尝试在桌面上执行某些操作,但无法执行,因为应用程序在整个桌面上仍然有锁定 - >死锁。

您可以使用像Chronon这样的工具来记录整个程序,并允许您在时间轴上来回移动。

最后一个选项是日志记录或穷人的调试器()。System.out

[编辑]

很难用 System.out 检查 20 个参数中的哪一个不相等。

这实际上很简单:

System.out.println("check");
if(!a1.equals(b2)) System.out.println(a1+"!="+b1);

然后复制最后一行。这样,只有当某些内容真正有趣时(而不是19个相等的参数),您才会获得输出。如果无法区分,请向输出添加一些模式(即两者都是):aXaYtrue

if(!a1.equals(b2)) System.out.println("a1:"+a1+"!="+b1);

推荐