IDE 在 java fx 应用程序的断点处以调试模式挂起
Posted
技术标签:
【中文标题】IDE 在 java fx 应用程序的断点处以调试模式挂起【英文标题】:IDE hangs in debug mode on break point in java fx application 【发布时间】:2015-03-07 22:22:37 【问题描述】:我在 IntelliJ IDEA 中调试时遇到问题,它在 javafx 应用程序的侦听器断点处以调试模式挂起。我试图增加堆空间,但这无济于事。也许有人也有这样的问题,请建议我该怎么做。
【问题讨论】:
【参考方案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);
【讨论】:
如果我必须检查两个具有 20 个参数的对象是否相等,并且它返回 false,但我实际上期望为 true,那么很难使用 System.out 检查 20 个参数中哪个不相等。我的同事在调试监听器时也没有这样的问题,但他们也不知道出了什么问题,我们都有相同的硬件、操作系统和环境。 我喜欢这里的解释,但不喜欢解决方案。我试图让我的调试器在 Ubuntu 上工作,我需要它工作。我的 OSX 机器上的相同 IDE 和相同应用程序没有这些问题。我有哪些选择? @user2223059 您可以在接受的答案中使用命令行选项,使用日志记录,Chronon,或者您可以为 Linux 创建一个新的无锁桌面。【参考方案2】:将此设置为 VM 参数:
-Dsun.awt.disablegrab=true
它会弄乱拖放,并在调试器暂停时在您的屏幕上留下一个工件 - 但它会让您调试。每当您阻塞 JavaFX 线程时就会发生这种情况。
【讨论】:
谢谢,我用这个把头发拉出来了。 谢谢!当我尝试调试旧应用程序时,我的笔记本电脑(运行 Ubuntu 16.04)死机了(唯一的出路是 ctrl+alt+f1 并运行sudo killall java
),但这有帮助:)
你就是救命恩人。这个问题让我抓狂。谢谢
也适用于 Eclipse!
谢谢,它也适用于 awt,我没有在我的应用程序中使用 javafx,我在我的运行配置中添加了这个选项 ias VM 选项。 Ubuntu 18.10。以上是关于IDE 在 java fx 应用程序的断点处以调试模式挂起的主要内容,如果未能解决你的问题,请参考以下文章