[英]How to debug Java code when using ANT script in Eclipse
我有一個java類,我需要調試它(放置斷點並繼續使用F6)。 我正在使用ANT腳本來初始化,構建,部署和運行代碼。 我在用:
<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" debuglevel="lines,vars,source">
..........
</javac>
但是當我將斷點放在我的foo.java類中的一行中並運行ant腳本(運行部分,右鍵單擊運行 - > Debug As - > Ant Build)時,Eclipse不會停在那一行碼。
我錯過了什么?!
(無法對給定的答案發表評論,所以必須另外回答)
我意識到從Eclipse啟動Ant時,你必須將fork =“true”添加到<java>
任務中。 另外,我首先不清楚如何編寫嵌套的jvmargs,所以這里舉個例子:
<java classname="..." fork="true">
<jvmarg value="-Xdebug" />
<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5432" />
...
</java>
在<java>
ant任務中,您應該添加兩個jvm參數( <jvmarg>
IIRC)以打開調試:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5432
這將啟動調試打開的java程序,程序將准備接受端口5432上的調試器連接。然后,您應該使用IDE的遠程調試工具並指示它連接到端口5432。
在Eclipse中:
Toolbar > External Tool Configurations... > (select your existing ANT build or create new) > JRE tab
在“VM Arguments”中添加:
-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y
再次Toolbar > Debug > Debug Configurations... > Remote Java Application > New
Name: Debug Ant
Project: <Select your project where debug files are kept>
Host: localhost
Port: 8787
現在在“ 外部工具配置 ”中啟動“ ANT任務 ”(等待遠程Java應用程序調試器連接),然后從“ 調試 ”工具欄圖標啟動“ 調試Ant ”。
這就是我讓它為我工作的方式 (只需評論以備將來參考)。
前方鏈接轉儲:
調試ant任務並不像普通的舊java調試那么簡單。 雖然您可以調試添加斷點的Ant文件,但是在特定自定義任務的代碼內挖掘將需要您添加遠程調試器以便能夠“捕獲”正在運行的進程。
我將在Eclipse中解釋如何執行此操作,盡管我可以通過所有主要的Java IDE實現它。 首先,為計划使用自定義新任務的ant文件創建新的運行配置。 為此,請訪問:
運行 - >外部工具 - >外部工具配置...
右鍵單擊Ant Build - > New,然后在Main選項卡中選擇Buildfile字段中的ant腳本。 然后轉到JRE選項卡並插入以下JVM參數:
-Xrunjdwp:運輸= dt_socket,地址= 8000,服務器= Y,暫停=正
如果你想知道這些參數意味着什么,請檢查一下,雖然有點更新(Java 1.5)仍然有效。
完成此操作后,必須為遠程Java應用程序創建新的Debug配置。 為此,請導航至:
運行 - >調試配置
下拉左列中的列表,然后右鍵單擊Remote Java Application - > New。 在“項目”字段中選擇項目名稱。 只要您使用相同的Ant配置(JVM參數),主機和端口的默認值就可以了。
一切都准備好進行試運行! 在您認為必要的地方添加斷點。 在我的例子中,我在使用自定義ant任務的ant腳本以及execute方法中的自定義ant任務中添加了一個。
右鍵單擊您的ant腳本或任務 - > Debug As ...-> Ant> Build first
現在,在調用自定義ant任務代碼之前,請轉到Run-> Debug Configurations並調試先前創建的Java Remote Application配置。 這將啟動一個單獨的線程,它將調試您的自定義任務代碼,前提是您包含一些斷點:)您可以在下圖中看到我的情況如何,線程在我的自定義ant任務的execute方法中停止。 在此之后,由您決定下一步該做什么......
set ANT_OPTS=%ANT_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5432
在Eclipse中
Toolbar >> Run >> Debug Configurations >> + >>
給出價值觀:
Name: Debug_Ant
Project: active-eclipse-project
Host:localhost
Port:5432
這是為了幫助那些想知道如何調試使用ant構建和部署的Web應用程序的人。 這在遺留應用程序中非常頻繁。 如果項目以“動態Web項目”作為開頭啟動,則以下步驟甚至不需要Ant。
在代碼中設置斷點。
Window -> Show View -> Others -> Servers
例如,添加服務器JBoss或Tomcat。
右鍵單擊服務器並選擇“Debug”。
確保在ant構建文件中設置了debug =“true”。
腳步:
1)配置遠程java調試器,本地主機為名稱,端口地址為8000 (或者系統的端口地址)
2)創建一個批處理文件並將其保存在tomcat的bin文件夾中(當我們想要遠程調試同一系統中的服務器時,需要執行此步驟)。
在批處理文件中,你應該保留這一行:
設置JPDA_ADDRESS = 8000
設置JPDA_TRANSPORT = dt_socket
catalina.bat jpda start
在此之后,在java代碼中保留一個斷點,並調試這個遠程調試器。 它會工作。
快樂編碼!!
我也遇到了這個問題,我按照以下步驟解決了問題。
將以下行放在ANT文件中
轉至調試配置 - >遠程Java應用程序 - >使用項目名稱創建新配置文件,端口= 5432,主機為localhost並保存。
現在使用調試模式運行build.xml,然后您應該在控制台中看到“在地址5432處偵聽傳輸dt_socket”
現在運行您配置的調試配置文件。 現在你的selenium代碼將使用Debug模式運行。
希望這可以幫助。
如果您仍然遇到問題,請告訴我,以便我可以幫助您。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.