2012-03-05 66 views
3

我掙扎調試做成了一個吊帶捆綁的應用程序通過遠程Java應用程序調試Groovy代碼。應用程序幾乎完全是Groovy代碼(我有Groovy Eclipse插件),而Eclipse(使用Maven)正在構建.jar並將其安裝在Sling中,沒有任何問題。如何調試在Eclipse

然而,這不是能夠調試。我按照說明設置遠程調試,這是我收集是必要的調試吊帶應用 - 具體而言,我啓動吊帶用下面的命令:

java -Xdebug -Xnoagent -Djava.io.tmpdir=/c/Users/nickgolding1/temp -Xmx1024m -Xrunjdwp:transport=dt_socket,address=30303,server=y,suspend=n -jar org.apache.sling.launchpad-6-SNAPSHOT-standalone.jar -p 8080 

...,然後設置調試配置在Eclipse中,類型爲「遠程Java應用程序」,指向我的項目,連接類型「標準(套接字連接)」,主機本地主機,端口30303.此配置似乎開始好 - 至少,我沒有得到任何反饋,表明它沒有' t - 但我在Groovy代碼中設置的斷點實際上並不會中斷對Sling應用程序的請求執行。

我已經看到了,顯示有通過遠程Java應用程序的配置,在那裏他們沒有與Java代碼問題調試Groovy代碼問題的人的各種論壇一對夫婦的職位。不幸的是,我的應用程序都是Groovy,沒有Java,所以我無法驗證這是這種情況。

任何想法讚賞!

回答

3

首先,一個建議。在您的Xrunjdwp:transport選項中設置suspend=y。這將暫停在main中,並會給你一個更好的想法,以確定你的問題是否與你的調試選項或Groovy代碼有關。現在

,到更復雜的東西。是。關於遠程Groovy代碼的調試有一些問題。這個問題通常出現在Groovy代碼動態加載的時候。在這種情況下,調試名稱通常與源名稱不匹配,調試器不知道如何將動態加載的類文件與原始源代碼相匹配。

一個這樣的問題在這裏描述(也有類似的地方發生的事情毫無疑問等地): https://jira.springsource.org/browse/SPR-7113

所以,我給你的建議是,如果可能,你應該確保你的Groovy代碼爲預在發送到服務器之前編譯。 (並且還設置suspend=y。)

+1

感謝。 'suspend = y'告訴我調試選項正在工作(因爲它等待Eclipse開始調試,然後成功啓動)。所以看起來問題在於Groovy。 你的預編譯的建議是好的,但我敢肯定,我的Groovy代碼被預編譯 - 當然,Maven構建,它的編譯它們的輸出聲明。 – 2012-03-06 10:35:56

+0

另外,請確保您的groovy源包含在Eclipse中遠程啓動配置的源查找路徑中。 – 2012-03-06 18:34:50

+0

他們不是,好點 - 但他們現在,甚至在清理和重新部署後仍然沒有調試。 – 2012-03-13 13:46:12