java工程如何開啓遠程調試

JAVA遠程調試啓動命令

基於Java的系統提測過程中總是會面臨如何在研發端重現的問題。 若是情景簡單,研發可以切換到SIT環境構造相關數據完成復現和單步調試,但更多的情況是情景複雜,難以重現或重現成本過高。研發花費大量經歷在本地適配SIT環境然後才能單步調試尋找問題。

如果讓SIT環境可以接收遠程調試,是不是可以更好的解決這一難題?(來自闊爺的之前項目的經驗~)所以有了這篇文字。

需求:
1. SIT環境支持遠程調試
2. 不需要侵入式的代碼修改。
3. 隨時可以接入調試,不調試的時候不阻斷程序運行。

實現途徑:

方案#1 通過maven插件: (不滿足需求第二條)

<build>         

  <plugins>             

    <plugin>                 

      <groupId>org.springframework.boot</groupId>                 

      <artifactId>spring-boot-maven-plugin</artifactId>                 

      <configuration>                     

        <jvmArguments>   -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005  </jvmArguments>

      </configuration>

    </plugin>

  </plugins>

</build>

 

方案#2 通過java自身的啓動參數實現: (完美滿足上述3條)

java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -jar ./bin/www-boss-master-1.0.0-SNAPSHOT.jar

 

-XDebug 啓用調試。 
-Xrunjdwp 加載JDWP的JPDA參考執行實例。 
  transport 用於在調試程序和 VM 使用的進程之間通訊。 
   dt_socket 套接字傳輸。 
   server=y/n VM 是否需要作爲調試服務器執行。 
   address=8000 調試服務器的端口號,客戶端用來連接服務器的端口號。 
suspend=y/n 是否在調試客戶端建立連接之後啓動 VM 

 

結論:

目前在用方案#2

 

使用: 

 Eclipse, Ideal, Vscode 都支持, 配置remote的ip 和端口: 8000 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章