2011-01-19 97 views
0

我想从Eclipse调试一个使用Apache Camel的webapp,当我'追踪到'我到达Eclipse的地方说没有源文件可用,我可以看到Eclipse中显示的字节码(通常我看到源代码),但显然我无法进入该字节码(我尝试'F6/Step Over',但没有任何反应)(不是说它会比源代码更有用)。如何跟踪/调试Apache Camel或AOP修改的代码?

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

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

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

+0

您收到此消息的课程是什么? – Raghuram 2011-01-19 11:07:22

回答

1

Apache Camel不会执行任何字节码操纵器或工具。如果您使用Camel Proxy功能,它至多会使用JDK库中的Proxy。

所以它必须是其他库,它会导致你的eclipse调试器无法进入源代码。

Apache Camel的所有源代码都是使用maven标准作为源JAR分发的。 如果你使用maven,有一个maven命令来下载我认为Eclipse能够使用的源JAR。

我没有使用Eclipse,但使用IDEA,它可以自动从Maven回购站下载-source JAR。

1

要通过CGLIB或JDK代理proxed浏览您的调试器调用proxed代码行调试代码...

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

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