轉載自 http://blog.csdn.net/kongqz/article/details/3971263
項目放到linux服務器了,服務器的環境或者數據可能和我們本地不一樣,這個時候我們可能需要遠程的斷點進行調試,來查看請求過程中的各個變量的值。這里我們的應用服務器用的tomcat5.5.17
這個時候你需要知道JPDA這個概念。
簡單的概括下JPDA:
Java Platform Debugger Architecture(JPDA:Java平臺調試架構) 由Java虛擬機后端和調試平臺前端組成 1.Java虛擬機提供了Java調試的功能 2.調試平臺通過調試交互協議向Java虛擬機請求服務以對在虛擬機中運行的程序進行調試
這里我們的eclipse就是那個調試的前臺。我們需要將本地的調試平臺和服務器運行的項目結合起來。
第一步:啟動tomcat的jpda支持
默認情況下tomcat的啟動命令是: ./catalina.sh start 但是這個命令是沒有啟動我們的jpda這個服務
我們需要啟動jpda服務,好在tomcat提供了集成化的命令:./catalina.sh jpda start,這樣就啟動了我們服務器jvm的jpda服務了。tomcat默認的jpda服務的端口是8000,這個時候我們使用命令看下 netstat -an,看看8000端口是不是已經啟動了。
第二步:從本地建立jpda的斷點調試前臺
1、在eclipse的“Run”菜單下選擇“Debug...”菜單(有的eclipse版本是debug configuration),在彈出的對話框左邊的菜單中選擇“Remote Java application”菜單,右鍵點擊,選擇“New”,這個時候彈出一個需要填寫參數的對話框
2、在彈出的框中,定義項目名稱,選擇要斷點調試的項目,Connect type(默認Standard (Socket Attach)),定義我們的web項目放在哪里(就是我們的遠程虛擬機在哪里),填寫他的ip以及提供的服務端口號,tomcat的這個版本是8000.最后選擇source標簽,將項目的源碼加入,我這里一般選擇add一個java PRoject的方式
3、切換到debug模式下,就能看到debug的相關選項都是激活狀態。在本地的source文件中加斷點,然后請求服務的鏈接,看看我們的斷點調試是否成功。
以上的操作經過我本人驗證過。
很多的服務器都提供這種遠程調試的接口服務,所以不要局限于tomcat可用,最主要的區別就是每個服務器提供的jpda的啟動方式不同,提供的服務端口不同,這里我們tomcat5.5提供的啟動方式是catalia.sh jpda start這種命令行的方式,端口默認用8000。大家在開發的時候按照服務器提供的說明進行調試吧
加點常看的操作命令:
1、查看當前tomcat的進程號
[java]view plaincopy通過上邊的命令執行后可以看到tomcat的進程號是14857
2、殺掉當前的tomcat進程
[c-sharp]view plaincopy為啥這么殺死進程?因為用常規的shutdown.sh 殺死tomcat進程很慢,偶爾因為資源占用還關閉不了,索性直接做掉這個進程3、啟動jpda的遠程調試
[java]view plaincopy4、查看默認的8000對外服務端口是否啟動
[java]view plaincopy5、測試完畢如何關閉?
直接殺死tomcat進程就行了,或者按照正常步驟關閉tomcat就ok了
6、直接按照上邊的方法進行遠程連接調試吧。在本地源碼中增加斷點,在查看遠程服務器。注意,這個8000端口不影響原來的任何服務。只是當我們將項目上線的時候就不要這么啟動我們的tomcat了。
新聞熱點
疑難解答