開發(fā)中,往往發(fā)布的應用與開發(fā)環(huán)境的環(huán)境有差異,測試環(huán)境報的問題在開發(fā)環(huán)境很難重現,也很難定位問題,如果報錯,是程序問題還是環(huán)境問題,常常是讓開發(fā)頭痛的事。
拿我們項目來說,測試環(huán)境用的服務器是JBOSS,而開發(fā)環(huán)境是Jetty或者Tomcat,既然這樣,而測試的服務器我們都沒有權限訪問,甚至看日志的權限都沒有,所以我一般在自已機器上也裝一個同樣版本的JBOSS。
原因一:重現問題,排除環(huán)境差異
原因二:便于調試,定位問題(當然這里指遠程調試)
方法:
1. 我們把項目的war包放到JBOSS的deploy目錄下
> bin
> vi run.conf
2、按ctrl+G 定位到文件最后 可以看到紅色字體

# Sample JPDA settings for remote socket debuging
JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8686,server=y,suspend=n"
可見此處Jboss 的遠程調試端口為8686

按上圖配置完后,單擊Apply保存配置,然后單擊Debug按鈕,此時已連接到Jboss監(jiān)聽端口8787,Jboss監(jiān)聽到該端口后也開始啟動。
到此OK,然后在你的代碼里打斷點,開始爽歪歪的調試吧,定位問題從此不再難。