【问题标题】:Eclipse SWING app: breakpoint hit only after an uncaught exception is thrownEclipse SWING 应用程序:仅在抛出未捕获的异常后才命中断点
【发布时间】:2010-11-04 20:21:58
【问题描述】:

我有一个非常奇怪的问题。 我正在 Eclipse 中开发 Java SWING 应用程序。我在代码中的某处设置了一个断点,然后运行调试。我执行了包含断点的代码,但它总是被跳过。 一旦我运行一些引发未捕获异常的代码,断点就会再次被击中,而不会更改任何其他内容。抛出异常的代码与包含断点的代码无关。

我尝试在几个地方设置断点,但在抛出异常之前它们永远不会被击中。 我仅针对这一特定应用程序遇到此问题。我的调试器适用于其他 SWING 应用程序。

你能想到造成这种情况的任何原因吗?

【问题讨论】:

标签: java eclipse debugging swing


【解决方案1】:

您运行的是哪个版本的 eclipse 和 Java?

你知道this question吗? (bug 279137: JDK 1.6.0_14 下断点命中失败)


正如 gojomo 在 cmets 中所说的那样,该错误 (279137) 现在(2009 年 7 月 21 日)提到:

该错误现在在 sun 错误数据库中可见:bug 6862295。

我们已经列出了解决此问题的方法,可以在我们调查该错误的修复时使用。

解决方法

使用选项 -XX:+UseParallelGC 会使客户端 VM 或服务器 VM 无法重现故障。

(选项哟添加到eclipse.ini)

我建议您使用“观看此错误”功能,以便在有错误更新时通知您。这是观看此视频的链接specific bug


已修复

正如release note of the jdk6_u16(2009 年 8 月下旬)所提到的,该错误已得到修复

此版本中修复的错误:

6862295JDWP threadid 在调试会话期间更改(导致忽略断点)

【讨论】:

  • 我经历了很多。感谢您提供错误报告链接。
  • 我认为这可能是原因。我试图下载 1.6.0_13 但我无法在任何地方找到它。谁有链接?
  • @Andrea:下载java6u13(当前14之前的上一版本),可以到:java.sun.com/products/archive/j2se/6u13/index.html
  • @AndreAC 很高兴听到它。我希望 java6u15 能解决这个问题。不要忘记您可以使用 java6u14 启动您的 Eclipse(用于最新的热点优化和更快的 Eclipse),但在 Eclipse 中声明为默认 JRE 一个 jdk6u13(用于编译和运行您的程序)
  • 该错误现在提到了 6u14 的另一个解决方法:使用 JVM 选项:-XX:+UseParallelGC
【解决方案2】:

您是否在单独的线程中启动了 GUI?我不认识你的特殊问题,但是一旦我开始使用 java 教程中的这段代码,很多奇怪的问题就消失了:

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        createAndShowGUI();
    }
});

【讨论】:

  • 啊啊啊...好人调用。我记得有一次我迷信地使用它,每当我遇到任何 Swing 问题时。我什至有一次嵌套调用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 2016-04-22
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多