![在 Eclipse 中调试时,UI 完全冻结。我该如何找出问题所在?](https://linux22.com/image/1119217/%E5%9C%A8%20Eclipse%20%E4%B8%AD%E8%B0%83%E8%AF%95%E6%97%B6%EF%BC%8CUI%20%E5%AE%8C%E5%85%A8%E5%86%BB%E7%BB%93%E3%80%82%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E6%89%BE%E5%87%BA%E9%97%AE%E9%A2%98%E6%89%80%E5%9C%A8%EF%BC%9F.png)
我正在使用 Ubuntu 13.10 并使用 Eclipse 4.3 调试 Java Swing 事件。
在特定时刻,我的应用程序会显示一个弹出菜单,此时我的 UI 会冻结。鼠标指针只能移动,但没有任何响应。
为了结束冻结,我转到 TTY1,查找最新的 java 进程并将其终止。
我想找出导致此错误的原因。这是系统错误还是有什么问题?我关心的原因是,我只想针对该单个兴趣点进行调试 :-)
日志文件没有显示任何重要条目(但我对此并不完全确定)。xsession-errors 没有更新,如果我使用 -9 终止进程,情况仍然很尴尬:按键事件有效,但鼠标仍然无法正常工作。直到我关闭 Eclipse。
在我看来,这是与内存相关的标志。但 top 和 UI 工具显示剩余内存足够。
那么我该怎么做才能找到这个问题的根源呢?
答案1
如果你以前没有使用过,有一个很好的方法可以调试任何本地 Java 应用程序的问题,可视化虚拟机确实有助于解决服务器进程失控问题。它以 GUI 应用程序的形式启动,并附加到在同一 jvm 中运行的任何 Java 应用程序。如果 Eclipse 在工作时被锁定,这至少会让您知道哪些方法被卡住了。