eclipse+maven+tomcat/jetty進行遠端偵錯__eclipse

來源:互聯網
上載者:User

首先,maven debug配置,請參看:http://maven.apache.org/surefire/maven-surefire-plugin/examples/debugging.html

下面,請看我的實際操作:


一、以tomcat作為容器

以tomcat容器為例,其配置方式有3種:

首先,maven項目的pom.xml檔案中,在<build>的<plugins>下邊應該配置tomcat7-maven-plugin外掛程式,如下:

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- http port -->
<port>8080</port>
<!-- application path always starts with / -->
<path>/test</path>
</configuration>
</plugin>


(1)方式一

a.  開啟cmd命令列,在Maven命令執行前加入一行參數:


export MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y


以上內容可以在maven的安裝目錄的bin\mavenDebug.bat檔案中找到。(搜尋debug即可)


下面是命令的詳細解釋:

-XDebug 啟用調試
-Xrunjdwp 載入JDWP的JPDA參考執行執行個體。
transport  用於在偵錯工具和 VM 使用的進程之間通訊。
dt_socket 通訊端傳輸。
server=y/n VM是否需要作為調試伺服器執行。
address=8787調試伺服器監聽的連接埠號碼。
suspend=y/n 是否在調試用戶端建立串連之後啟動 VM 。如果設定為y,它會阻塞程式運行,直到有用戶端串連到對應的監聽連接埠(這裡是8787),程式才真正開始執行。我們有時候會抱怨程式一閃而過,還沒來得及在本地載入上代碼程式就執行完了,這種情況就可以使用suspend參數。

注意事項:


如果你是執行的jar來運行程式,

-jar參數不能寫到-Xug參數前,像這樣無法啟用調試:
java -jar lib/Main.jar -Xdebug -Xrunjdwp:transport=dt_socket,address=9527,server=y,suspend=y

要遠端偵錯maven2啟動的程式,例如mvn jetty:run,可以在啟動程式時執行命令:export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y"


如果是在Windows環境下,則是:


set MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y

此時在某個由Maven管理的工程下執行mvn指令,將會使mvn進入遠端偵錯狀態,開通我們配置的偵聽連接埠號碼8787:

b. 執行命令 mvn tomcat7:run,如下圖所示以mavenDebug工程為例:


然後我們就可以使用Eclipse對mvn進行調試了,

c. 開啟IDE,進行如下配置:

滑鼠選中你要調試的maven項目的pom.xml檔案,右鍵,選擇“Debug As”---->"Debug Configuritaions...",彈出一個視窗,在視窗的左側邊欄,往下拉一下,你可以看到“Remote Java Application”,選擇它,右鍵,“New”,視窗右邊將出現一些需要輸入的框,按照下圖填入相應的值即可:


輸入值完成後,點“Debug”按鈕即可。

命令列就會出現日誌啦,直到看到日誌最後一行出現資訊: Starting ProtocolHandler ["http-bio-8080"],接下來你就可以用8080連接埠去訪問你的應用了,而8787連接埠跟tomcat可無關哦,8080是tomcat的連接埠,8787則是jvm監聽的連接埠。到此,項目已經以debug的模式啟動了。


(2)方式二

1.在eclipse的run configurations中建立一個maven build,選擇好Maven工程,在Goals一欄中輸入tomcat7:run。然後進入“jre”Tab,在vm arguments一欄中輸入-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n


2.開啟debug configuration,建立一個remote java application,同上“(1)方式一的c”部分的內容,這樣,當伺服器啟動後,就可以進行遠程debug了


(3)方式三

在tomcat/bin/的catalina.bat檔案的開頭加入下面的設定即可:

SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787

然後在eclipse建立一個remote debug,連接埠填入8787即可。


二、以jetty作為容器

1.在eclipse的run configurations中建立一個maven build,選擇好Maven工程,在Goals一欄中輸入jetty:run。然後進入“jre”Tab,在vm arguments一欄中輸入-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

2.開啟debug configuration,建立一個remote java application,在host中輸入伺服器位址,一般就本機localhost。在port一欄中輸入上面配置中連接埠號碼8787。這樣,當伺服器啟動後,就可以進行遠程debug了。這種debug方式的好外是可以在debug依賴的jar包,並在上面設定斷點。(前提是你已經獲得了jar包的原始碼)


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.