Java 如何跟踪/调试Apache Camel或AOP修改的代码?
我正试图使用ApacheCamel从Eclipse调试一个Web应用程序,当我“跟踪”到某个点时,Eclipse说没有可用的源文件,我可以看到Eclipse中显示的字节码(通常我可以看到源代码),但显然我无法进入该字节码(我尝试了“F6/Step Over”,但什么也没有发生)(与源代码相比,它并不是那么有用) 那你怎么能追踪到这样一只野兽呢 我想知道所有这些代码生成/代码截取层产生的问题是否比他们试图解决的问题还多。只要一切正常,这似乎是有帮助的,但一旦出现问题,就很难诊断Java 如何跟踪/调试Apache Camel或AOP修改的代码?,java,debugging,aop,trace,apache-camel,Java,Debugging,Aop,Trace,Apache Camel,我正试图使用ApacheCamel从Eclipse调试一个Web应用程序,当我“跟踪”到某个点时,Eclipse说没有可用的源文件,我可以看到Eclipse中显示的字节码(通常我可以看到源代码),但显然我无法进入该字节码(我尝试了“F6/Step Over”,但什么也没有发生)(与源代码相比,它并不是那么有用) 那你怎么能追踪到这样一只野兽呢 我想知道所有这些代码生成/代码截取层产生的问题是否比他们试图解决的问题还多。只要一切正常,这似乎是有帮助的,但一旦出现问题,就很难诊断 编辑我不想跟踪Ap
编辑我不想跟踪Apache Camel本身。我只想跟踪一个使用Apache Camel的程序,我意识到事情很快就会变得非常混乱:基本上你会失去跟踪能力,因为你从Java源代码跳到“某物”.Apache Camel不执行任何字节码操纵器或指令插入。如果使用Camel代理功能,它最多使用JDK库中的代理 因此,一定是其他库导致eclipse调试器无法进入源代码 ApacheCamel的所有源代码都使用maven标准作为源JAR分发。 如果您使用maven,那么有一个maven命令来下载-source JAR,我假设Eclipse可以使用它
我没有使用Eclipse,而是使用IDEA,它可以从maven repos自动下载源代码JAR。要调试由CGlib或JDK代理代理的代码,请将调试器导航到调用代理代码的行
public void foo() {
serviceWithProxy.bar(); // put breakpoint here
}
…现在,在您进入
serviceWithProxy.bar()
之前,按Ctrl+T
(Eclipse)并选择要调试的类型(例如ServiceWithProxyImpl
)。将断点放在ServiceWithProxyImpl.bar
的第一行(Eclipse会自动将您导航到那里),然后按“继续”在调试器中。这是在调试时跳过代理的最简单方法。获取此消息的类是什么?Apache Camel是开源的。获取源代码并将其附加到Eclipse中的库中,您将能够调试到其中并查看源代码。