什麼是遠程調試,就是在A機器上利用Eclipse單步跟蹤調試B機器上的Web應用,固然調試A機器上Web應用也是沒有問題的,90%我都是調試本機的Web應用,遠程調試的意義我想我不用說了,你們都會想到它的好處,你能夠在本地調試非本地測試環境上的應用,這是件多麼美妙的事,因此我就不說它的好處了,那麼本地調試呢,我喜歡本地調試也採用下面要介紹的方法,爲何不用myeclipse,WTP,TomcatPlugin等。
下面我闡述下在eclipse中啓動Web應用的缺陷:
我自己是很是喜歡使用Myeclipse 作WEB部署的,可是我不喜歡使用Myeclipse啓動tomcat,固然WTP,TomcatPlugin等也不喜歡,使用Myeclipse作部署的好處就是很是靈活,不只能夠部署到Web應用裏面還能夠任意部署到某一指定路徑下。可是使用Myeclipse啓動tomcat的話,有以下問題:
a.卡,比較慢,尤爲是同時啓動多個應用.
b.若是斷點比較多的時候例如100多個,必須把每一個不須要使用的斷點先禁用掉或乾脆刪掉,也就是說web應用啓動的時候就已經決定了是debug模式仍是run模式。中間不能夠切換。
c.一旦eclipse死掉了,web應用也就斷掉了。
d.對於程序來講相對路徑,類加載路徑都是和系統正式運行的狀況下徹底不一樣的(要視具體插件而論,每一個插件的部署方式都不太同樣),即和Web應用獨立運行的相對路徑和類加載環境有差別,固然熟練的老手能夠輕鬆搞定,可是就目前國內狀況看,不少初學者在這個問題上仍是很苦惱的。
e.順便說一句和本話題無關的,eclipse的console並不能徹底模擬cmd控制檯,一些流操做會有問題。例如:PushbackInputStream
那麼使用遠程調試的方法作本地調試有什麼好處呢?
a. 運行速度比較好。
b. 運行期間可使用eclipse鏈接web應用作調試,調試完成後能夠斷開鏈接,須要調試的時候能夠再從新進行鏈接,斷點的禁用功能可能就不多派上用場了,由於相對於在debug模式和run模式間自由切換。
c. Web應用是獨立運行的,不用擔憂eclipse死掉即玩完了。
d. 從開發到上線運行,環境一直能夠保持一致。
說了半天,沒有使用過的人可能仍是不瞭解,不要緊,能夠看完下面的,再回過頭看上面的。
下面我舉一個小例子介紹如何進行遠程調試.
環境:tomcat,Eclipse,作遠程調試不須要任何插件。固然可使用MyEclipse把Web應用部署到tomcat上面,注意只是部署,通常來說使用遠程調試就不須要配置MyEclipse的Web Server了,MyEclipse在這裏只起到一個copy文件的做用,好在如今Myeclipse能夠隨意指定目錄copy了。即 Deployment 對話框中的Custom Location,在這裏推薦你們一個copy文件的小插件,有了這個插件就不須要Myeclipse部署了。
此次例子的源碼很簡單:
Jsp 源碼以下index.jsp
<%com.syj.test.DebugTest.test("sunyujia test");%>
Hello Remote Debug
在DebugTest類的test方法中作個斷點既可測試
下面按步驟進行講解
1. 將web應用部署到Tomcat的webapp目錄下
2. 修改Tomcat/bin/startup.bat文件,在最前面加上以下代碼
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
注意上面命令必須寫成一行中間不能有換行,-前是空格-後是非空格,因爲顯示器分辨率不一樣,該文章在顯示的時候可能會有換行的狀況。
更多Web服務器遠程調試參數可參見
3.必須先啓動Tomcat啓動tomcat/bin/startup.bat參下圖
4.在com.syj.test.DebugTest.test方法中設置斷點
5.在eclipse中配置debug,配置完成後點擊debug按鈕。如圖:
6.打開瀏覽器訪問在第1步部署的web應用,訪問index.jsp
7.當瀏覽器訪問index.jsp時,因爲調用了com.syj.test.DebugTest.test,又因在test方法中設置了斷點,因此程序會被斷點攔截,如圖:
8.不須要調試的時候點擊斷開,須要調試的時候再點擊debug,很是方便,當調試過程當中出現引用非本project的源碼時(例如跟蹤到tomcat裏面或spring,hibernate裏面),會提示找不到源碼,點擊相應提示的按鈕(到時候editor區只有一個按鈕,因此你們就不要問哪一個按鈕了)能夠添加源碼繼續調試,或在配置debug前就把須要的源碼都添加上,在source選項卡里面,由於具體的基本調試這方面知識不屬於本話題討論範圍內,就不過多介紹了。
遠程調試就介紹到這裏吧。打了這麼多字仍是比較辛苦的,轉載請註明出處,謝謝!
轉自:http://blog.csdn.net/sunyujia/article/details/2614614