1. 程式人生 > >Remote debug二三事

Remote debug二三事

終於見識了傳說中的Remote debug。 因為如履薄冰,所以心急火燎不求甚解,最後反而證明了磨刀不誤砍柴功。

1,設定 JAVA_OPTS時,未加引號,導致未設定成功。無法按照遠端Debug模式啟動伺服器VM;
2,以Remote Debug模式啟動後,會等待遠端Client的VM連線,也就是如果沒有在監聽埠捕獲並和遠端除錯VM通訊,Jboss服務是不會啟動的。

在啟動服務後,只會更新gc.log,警告,必須由Client的Vm啟動。如果此時Eclipse沒有及時聯上,VM掛起,Server.log一無所有。Eclipse連線上後,將由Eclipse的VM處理伺服器端資料。

3,不同的JVM,引數設定是不同
JDK 1.3.1 JPDA settings
#JAVA_OPTS="-classic -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y $JAVA_OPTS"

JDK 1.4.1 JPDA settings
JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y $JAVA_OPTS"

4,曾經發生莫名其妙的錯誤,找了半天,最後把suspend=n改成suspend=y,就Ok了。鬱悶

總結:

實際上,關於Remote Debug最關鍵的就是,Server和Client的JVM要相同.即兩邊環境中的JVM必須相同。
如果僅僅在IDE中設定專案的版本是不夠的,那僅僅是編輯器對程式碼的校驗,真正執行的時候還是取決於JAVA_HOME的虛擬機器版本。