本篇博客介紹一下在Intellij IDEA下對Springboot類型的項目的遠程調試功能。所謂的遠程調試就是服務端程序運行在一臺遠程服務器上,咱們能夠在本地服務端的代碼(前提是本地的代碼必須和遠程服務器運行的代碼一致)中設置斷點,每當有請求到遠程服務器時時可以在本地知道遠程服務端的此時的內部狀態。java
首先,打開Edit configurations,點擊+號,建立一個Remote應用。spring
填寫name,配置Host地址(遠程服務器地址)和端口(選一個未被佔用的端口)。而後複製For JDK1.4.x下面的參數,示例配置的端口爲5005docker
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
通過以上步驟,已經得到了啓動遠程服務器的參數。在啓動springboot時默認使用java命令來啓動. 好比,示例項目啓動命令爲:springboot
$ 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
若是應用是跑在容器中的,只須要修改Dockerfile便可。例子以下app
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啓動模式。socket
啓動完成,對須要debug的代碼打上斷點,剩下的操做步驟就是訪問遠程服務器對應的業務請求,本地就會同步debug。其他的操做與本地debug相同,此處就再也不贅述了。debug
如感受文章對你有所幫助,能夠關注微信公衆號【五彩的顏色】鼓勵一下 調試