Spring Boot 可以打包成可执行的Jar 或者 War。如果用可执行的Jar,那就是用了内嵌的Web容器。如果是War,那么就部署在独立的Web容器中。下面针对这两种分别说一下,如何进行远程调试。

Spring Boot 可执行Jar包的远程调试

  • IDEA配置远程调试

    • [Run] - [Edit Configrations…] , 点击+号,新建 remote

      IDEA-Remote-Debug

      重要的是下方的HOST,是远端的IP地址。上面横线所绘参数,就是下一步启动jar的额外参数。

    • apply-save后,就已经能在IDEA的主界面右上角,DEBUG按钮的位置看到新配置的remote。

  • 带参数启动需远程调试的Jar

    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar demo4doc.jar

    注意这里把5005作为调试端口,需要应用服务器开放5005端口的防火墙。

  • 在IDEA中,选择remote,启动DEBUG,设置断点,这时访问应用,会自动在IDEA处捕捉断点,一如本地调试。

Tomcat的远端调试

如果使用独立的Tomcat,则需要在startup.sh或startup.bat文件里,设置额外参数

// bin\startup.bat(.sh)文件,在里面添加

// windows
set CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 %CATALINA_OPTS%"

// linux
export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 $CATALINA_OPTS"

END