为什么Eclipse不会在断点上停止?

时间:2011-12-21 19:04:21

标签: java eclipse spring

我尝试调试openAdaptor:

在org.openadaptor.bootstrap.ClasspathBootstrapper中:

mainMethod.invoke(appClass, new Object[] { args });

我发现这是SpringAdaptor的主要方法。

但是Eclipse并没有停止断点!可能是什么原因? 感谢。

4 个答案:

答案 0 :(得分:4)

确保没有单击“调试器”部分中“断点”选项卡顶部的小图标。它将跳过所有断点,正如您在其工具提示中看到的那样。

答案 1 :(得分:2)

可能永远不会调用该方法。尝试在您认为调用该方法之前(或者您100%确定它将被执行的位置)移动断点,然后逐步查看该方法是否被调用。

答案 2 :(得分:2)

对于带断点的行号,Eclipse并不是非常聪明。它只是说“这个源文件中的行是X,停在那里”。如果有一些更改行号的后期处理(如某些代码覆盖率工具),则断点将位于错误的位置。

另外,你说你已经附加了源代码,但请确保你已经真正做到了。仅仅在项目或工作区中拥有源是不够的。如果它是一个项目,您需要确保您的项目依赖于该项目而不是jar文件。如果它是一个jar,你需要确保与源的关联是正确的(只是在类路径上是不够的。)

最后,你需要确保你真正执行了你认为正在执行的事情。我设置了很多断点,然后想知道为什么他们没有被叫。原因最终是程序流程与我认为的不一样。

答案 3 :(得分:1)

确认而不是运行您的应用:

enter image description here

确保您使用的是调试器:

enter image description here

除非您使用调试器运行应用程序,否则将忽略断点。

如果这不是问题,那么请确保实际调用您的方法。尝试在您的应用程序的其他位置放置断点(在您调用100%的代码中),看看会发生什么。

方法签名(static或其他方面)应该没有任何区别。有时断点会在你认为会破裂的线后突破。尝试将断点向上移动一行,看看是否存在问题。

您还可以尝试逐步浏览应用,看看您认为代码是否正在运行,实际上根本没有被调用。如果这不是一个选项,请检查您可能做出的任何假设(例如,if语句中的一行上的断点 - 您确定if语句正在评估您的预期方式吗?