eclipse 遠程服務器端代碼調試

eclipse 遠程服務器端代碼調試

遠程服務器端

服務器端配置eclipse調試器監聽端口,有兩種方式,任選其一

 

第一種方式:

環境變量

export JPDA_ADDRESS=9999

 

 啓動tomcat

使用sh catalina.sh jpda start啓動

注意:不要用startup.sh

 

通過這條命令啓動tomcat,會監聽JPDA_ADDRESS設置的端口,等待調試器連接。

如果不配置JPDA_ADDRESS,默認監聽8000端口

 

 

第二種方式:

  配置$tomcat_home/bin/catalina.sh

加上如下一行

 JAVA_OPTS=”$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9988”

 

說明:server=y 是指目標應用程序作爲服務監聽將要連接的遠程調試器(常用);

     suspend=y 是指目標VM將暫停,直到調試器應用程序進行連接(若需要調試啓動錯誤,很有用);

     suspend=n 是指目標VM不暫停;

     address=9988 監聽端口。

 

 

啓動tomcat

 直接通過startup.sh啓動即可

 

通過ps -aux|grep tomcat查看啓動的tomcat進程,剛纔配置的-Xdebug等選項出現在進程信息中,證明配置成功

 

本機調試端

調試器配置

 

在本地eclipse中點擊debug按鈕,選擇Debug Configurations….,如下圖

 

 


 

 

 

點擊選項後,彈出一個窗口,雙擊左側Remote Java Application,如下圖


Name:自定義,任意名稱

Project:本機eclipse中的WEB項目,與遠端服務器上部署的WEB項目一致

Host:被調試的遠端服務器ip

Port: 遠端服務器中環境變量JPDA_ADDRESS的值

配置完成後點擊Apply,隨後點擊Debugeclipse窗口右下角出現

 

這裏ConnectionType我們選擇的是Standard(Socket Attach)方式調試

 

 

等待這個進度條跑完,直到consle的紅色按鈕變成灰色,此時已經完成了服務器端調試準備

 

 


 

 測試調試

 源碼打斷點

在本機eclipse源碼中找到一處要調試的地方,打上斷點

比如,我在一處webserviceservice入口類中某一方法testAdd中加入斷點

 


 

 

測試接口,進入斷點

比如,我測試自己的WebService接口

 

       private static String endpoint = “http://123.125.114.144:8080/JavaUtils/services/TestService?wsdl”;

      

       private static Call call  = null;

       @BeforeClass

       public static void init(){

              Service service = new Service();

              try {

                     call  = (Call) service.createCall();

                     call.setTargetEndpointAddress(endpoint);

              } catch (ServiceException e) {

                     e.printStackTrace();

              }

       }

 

 

    @Test

       public void testRemoteDebug(){

              String method = “testAdd”;

              // 調用遠程方法

              try {

                     String value = “testValue”

                     Object ret = call.invoke(

                                   method,

                                   new Object[] {value);

                     System.out.println(ret.toString());

              } catch (AxisFault e) {

 

                     System.err.println(e.getFaultString());

 

              }

       }

 

執行單元測試,調用服務器端WebService服務的testAdd方法,傳入value

此時eclipse進入debug狀態,跳到剛纔打斷點的51行,

 

這樣就可以像本機一樣F6F5進行跟蹤和調試遠程程序了

 

 

注意:服務器端配置的環境變量JPDA_ADDRESS雖然是端口,但是隻是調試器監聽端口,但是與tomcat中部署項目運行的端口是不一樣的,web項目運行端口是在tomcat_home/conf/server.xml中進行配置的,不要混淆

 

 

至此完整的eclipse遠程調試步驟已經描述清楚

 

總結

Standard(Socket Attach)方式進行服務器端監聽的優缺點:

先啓動遠程Java程序 然後 啓動Eclipse遠程調試,然後可以正常調試系統

缺點 :只有java程序啓動後才能進行調試,無法調試java程序的啓動過程,如果要全程調試需要使用另外一種方式,我會總結成另一篇文章

優點 :可以隨時連接到遠程java程序進行調試

發佈了0 篇原創文章 · 獲贊 19 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章