IDE 在 java fx 应用程序的断点处以调试模式挂起

IDE hangs in debug mode on break point in java fx application

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

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

您可以使用像 Chronon 这样的工具来记录整个节目并让您在时间轴上来回移动。

最后一个选项是日志记录或 poor man's debugger (System.out)。

[编辑]

it's hard to check with System.out which of 20 parameters not equal.

其实很简单:

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

然后复制最后一行。那样的话,你只会在真正感兴趣的时候得到输出(而不是 19 个相等的参数)。如果无法区分 aXaY(即两者都是 true),请在输出中添加一些模式:

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

将其设置为 VM 参数:

-Dsun.awt.disablegrab=true

它会扰乱拖放,并在调试器暂停时在屏幕上留下伪影 - 但它会让您进行调试。每当您阻塞 JavaFX 线程时,它就会发生。