Intellij IDEA基於Springboot的遠程調試

  • 2019 年 10 月 24 日
  • 筆記

簡介

本篇部落格介紹一下在Intellij IDEA下對Springboot類型的項目的遠程調試功能。所謂的遠程調試就是服務端程式運行在一台遠程伺服器上,我們可以在本地服務端的程式碼(前提是本地的程式碼必須和遠程伺服器運行的程式碼一致)中設置斷點,每當有請求到遠程伺服器時時能夠在本地知道遠程服務端的此時的內部狀態。

方法

首先,打開Edit configurations,點擊+號,創建一個Remote應用。

填寫name,配置Host地址(遠程伺服器地址)和埠(選一個未被佔用的埠)。然後複製For JDK1.4.x下面的參數,示例配置的埠為5005

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

經過以上步驟,已經獲得了啟動遠程伺服器的參數。在啟動springboot時默認使用java命令來啟動.
比如,示例項目啟動命令為:

$ java -jar remotedebug-0.0.1-SNAPSHOT.jar

那麼此時在啟動命令上添加上面獲得的參數(非springbboot項目,就是把多的那段配置添加到相應的環境變數即可):

$ java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005  remotedebug-0.0.1-SNAPSHOT.jar

這樣服務端就監聽在5005埠了。可以通過以下命令來檢查是否監聽成功:

netstat -anp | grep 5005

docker

如果應用是跑在容器中的,只需要修改Dockerfile即可。例子如下

FROM java:8    COPY target/agents.jar /app.jar  EXPOSE 8080  EXPOSE 5005  ENTRYPOINT ["java","-jar" ,"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005","-Dspring.profiles.active=sit","/app.jar"]

通過以上步驟已經完成了伺服器端參數的添加。下面啟動剛才配置的Remote服務。在啟動時候我們會發現此項啟動程式只有debug啟動模式。

啟動完成,對需要debug的程式碼打上斷點,剩下的操作步驟就是訪問遠程伺服器對應的業務請求,本地就會同步debug。其餘的操作與本地debug相同,此處就不再贅述了。

**如感覺文章對你有所幫助,可以關注微信公眾號【五彩的顏色】鼓勵一下**
![](https://img2018.cnblogs.com/blog/1821244/201910/1821244-20191024134914085-2045841336.jpg)