Eclipse遠程調試(遠程服務器端監聽)

前提:遠程服務器上運行的WEB項目class對應的源碼與本地項目中必須保持一致,也就是遠程tomcat部署的項目就是本機項目打包過去的,而本機項目沒有發生變更。java

遠程服務器端

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

第一種方式:tomcat

環境變量

export JPDA_ADDRESS=9999服務器

啓動tomcat

使用sh catalina.sh jpda start啓動eclipse

注意:不要用startup.shsocket

經過這條命令啓動tomcat,會監聽JPDA_ADDRESS設置的端口,等待調試器鏈接。單元測試

若是不配置JPDA_ADDRESS,默認監聽8000端口測試

第二種方式:spa

配置$tomcat_home/bin/catalina.sh

加上以下一行debug

 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,隨後點擊Debug,eclipse窗口右下角出現

這裏ConnectionType咱們選擇的是Standard(Socket Attach)方式調試,等待這個進度條跑完,直到consle的紅色按鈕變成灰色,此時已經完成了服務器端調試準備

測試調試

源碼打斷點

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

好比,我在一處webservice的service入口類中某一方法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行,這樣就能夠像本機同樣F6,F5進行跟蹤和調試遠程程序了。

注意:服務器端配置的環境變量JPDA_ADDRESS雖然是端口,可是隻是調試器監聽端口,可是與tomcat中部署項目運行的端口是不同的,web項目運行端口是在tomcat_home/conf/server.xml中進行配置的<Connector port="8080" ....>,不要混淆。

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

總結

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

先啓動遠程java程序 而後 啓動Eclipse遠程調試,而後能夠正常調試系統

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

優勢 :能夠隨時鏈接到遠程java程序進行調試

PS:這種調試方式最經常使用的

本文轉自:http://javacrazyer.iteye.com/blog/1757429

相關文章
相關標籤/搜索