轉自:http://blog.csdn.net/shixing_11/article/details/6662415
開發中,往往發佈的應用與開發環境的環境有差異,測試環境報的問題在開發環境很難重現,也很難定位問題,如果報錯,是程序問題還是環境問題,常常是讓開發頭痛的事。
拿我們項目來說,測試環境用的服務器是JBOSS,而開發環境是Jetty或者Tomcat,既然這樣,而測試的服務器我們都沒有權限訪問,甚至看日誌的權限都沒有,所以我一般在自已機器上也裝一個同樣版本的JBOSS。
原因一:重現問題,排除環境差異
原因二:便於調試,定位問題(當然這裏指遠程調試)
方法:
1. 我們把項目的war包放到JBOSS的deploy目錄下
2. 打開Jboss安裝目錄下的bin目錄,找到run.bat文件(Windowx環境,Linux請看文章最後),搜索8787,找到如下一行:
rem set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y %JAVA_OPTS%
改爲如下,即去掉紅色部分,即註釋即可
set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y %JAVA_OPTS%
然後運行Jboss的run.bat啓動Jboss,這裏Jboss啓動畫面如下:
3.這裏Jboss的配置已完全結束,下面請打開Eclipse,連接到Jboss的遠程端口,菜單路徑
Run-->Debug Configrations-->Remote Java Application 然後雙擊該菜單Remote Java Application,在彈出的界面做如下配置:
按上圖配置完後,單擊Apply保存配置,然後單擊Debug按鈕,此時已連接到Jboss監聽端口8787,Jboss監聽到該端口後也開始啓動。
到此OK,然後在你的代碼裏打斷點,開始爽歪歪的調試吧,定位問題從此不再難。
注意:上面是在windows環境下,如果是Linux也很簡單,只需修改run.conf 文件,找到如下一行:
#JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"
去掉前面的#號註釋,改爲如下即可:
JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"