我尝试调试openAdaptor:
在org.openadaptor.bootstrap.ClasspathBootstrapper中:
mainMethod.invoke(appClass, new Object[] { args });
我发现这是SpringAdaptor的主要方法。
但是Eclipse并没有停止断点!可能是什么原因? 感谢。
答案 0 :(得分:4)
确保没有单击“调试器”部分中“断点”选项卡顶部的小图标。它将跳过所有断点,正如您在其工具提示中看到的那样。
答案 1 :(得分:2)
可能永远不会调用该方法。尝试在您认为调用该方法之前(或者您100%确定它将被执行的位置)移动断点,然后逐步查看该方法是否被调用。
答案 2 :(得分:2)
对于带断点的行号,Eclipse并不是非常聪明。它只是说“这个源文件中的行是X,停在那里”。如果有一些更改行号的后期处理(如某些代码覆盖率工具),则断点将位于错误的位置。
另外,你说你已经附加了源代码,但请确保你已经真正做到了。仅仅在项目或工作区中拥有源是不够的。如果它是一个项目,您需要确保您的项目依赖于该项目而不是jar文件。如果它是一个jar,你需要确保与源的关联是正确的(只是在类路径上是不够的。)
最后,你需要确保你真正执行了你认为正在执行的事情。我设置了很多断点,然后想知道为什么他们没有被叫。原因最终是程序流程与我认为的不一样。
答案 3 :(得分:1)
确认而不是运行您的应用:
确保您使用的是调试器:
除非您使用调试器运行应用程序,否则将忽略断点。
如果这不是问题,那么请确保实际调用您的方法。尝试在您的应用程序的其他位置放置断点(在您调用100%的代码中),看看会发生什么。
方法签名(static
或其他方面)应该没有任何区别。有时断点会在你认为会破裂的线后突破。尝试将断点向上移动一行,看看是否存在问题。
您还可以尝试逐步浏览应用,看看您认为代码是否正在运行,实际上根本没有被调用。如果这不是一个选项,请检查您可能做出的任何假设(例如,if
语句中的一行上的断点 - 您确定if
语句正在评估您的预期方式吗?