0

我正在尝试使用 Eclipse 中的 Apache Camel 调试 web 应用程序,当我“跟踪”时,我到达了 Eclipse 说没有可用的源文件并且我可以看到 Eclipse 中显示的字节码(通常我看到源代码的地方) )但显然我无法进入该字节码(我尝试'F6 / Step Over'但没有任何反应)(与源代码相比,它并不是那么有用)。

那么你应该如何追踪到这样的野兽?

我想知道所有这些代码生成/代码拦截层是否没有产生比他们试图解决的更多的问题。只要一切正常,这似乎很有帮助,但是一旦出现问题,事情就会变得非常难以诊断。

编辑我不想追踪 Apache Camel本身。我只想跟踪一个使用 Apache Camel 的程序,我意识到事情很快就会变得非常混乱:基本上你有点失去跟踪能力,因为你从 Java 源代码跳转到“某物”。

4

2 回答 2

1

要调试由 CGlib 或 JDK 代理代理的代码,请将调试器导航到调用代理代码的行...

public void foo() {
  serviceWithProxy.bar(); // put breakpoint here
}

...现在在您进入serviceWithProxy.bar()Press Ctrl+T(Eclipse) 并选择要调试的类型之前(例如ServiceWithProxyImpl)。将断点放在ServiceWithProxyImpl#bar(Eclipse 自动导航到那里)的第一行,然后在调试器中按“继续”。这是调试时跳过代理的最简单方法。

于 2011-02-07T21:33:43.353 回答
1

Apache Camel 不做任何字节码操纵器或检测。如果您使用 Camel 代理功能,它最多使用 JDK 库中的代理。

所以它必须是其他库导致您的 Eclipse 调试器无法进入源代码。

Apache Camel 的所有源代码都使用 maven 标准作为 -source JAR 分发。如果您使用 maven,则有一个 maven 命令来下载我假设 Eclipse 能够使用的 -source JAR。

我没有使用 Eclipse,而是使用可以从 maven 存储库自动下载 -source JAR 的 IDEA。

于 2011-01-19T14:31:29.217 回答