Eclipse SWING应用程序:仅在抛出未捕获的exception后才会触发断点

我有一个非常奇怪的问题。 我正在使用Eclipse中的Java SWING应用程序。 我在代码中的某处设置了一个断点,然后运行调试。 我执行包含断点的代码片段,但总是跳过它。 一旦我运行了一些抛出未捕获exception的代码,断点就会再次被触发,而不会改变其他任何东西。 抛出exception的代码和包含断点的代码不相关。

我试图在几个地方设置断点,但是在抛出exception之前它们永远不会被击中。 我只针对这个特定的应用程序有这个问题。 我的调试器适用于其他SWING应用程序。

你能想出造成这种情况的原因吗?

你正在运行什么样的eclipse和Java版本?

你知道这个问题吗? ( 错误279137 :断点无法在JDK 1.6.0_14下命中)


正如gojomo在评论中所言 ,该错误(279137)现在(2009年7月21日)提到:

现在可以在sun bug数据库中看到该错误: bug 6862295

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

解决

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

(选项哟添加到eclipse.ini )

我建议您使用“监视此错误”function,以便在有错误更新时通知您。 这是查看此特定错误的链接


固定

正如jdk6_u16发布说明 (2009年8月下旬)提到的那样,该bug已被修复

此版本中修复了错误:

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

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

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