2011-01-19 99 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自動導航到那裏),然後在調試器中按「繼續」。這是在調試時跳過代理的最簡單方法。