IDEA+Tomcat远程调试Spring Boot项目(Windows\Linux环境)

1,550 阅读3分钟

环境搭建

开发环境

工具 说明 官网
Windows 10 操作系统 官网
CentOS7 操作系统 官网

开发工具

工具 说明 官网
IDEA 开发IDE 官网
Git 分布式版本控制系统 官网
MobaXterm_Personal 远程计算的终极工具箱 官网

开发环境

工具 版本号 下载
JDK 1.8 下载
Maven 3.6 官网
Mysql 5.7 下载
Nginx 1.17.6 下载

部署环境

工具 版本号 下载
Windows Server 数据中心(中文版) 2019
Tomcat 8.0 下载

遇到问题

由于没有使用容器技术,导致线上部署环境与线下开发环境不一致。因此遇到了本地运行、调试一切正常,线上项目却无法访问的情况,所以需要通过远程调试的方法直接运行线上代码,在本地打断点调试。

实际操作

大体工作分为两步,一是配置Tomcat开启远程调试功能。二是配置IDEA以远程调试方式运行。

配置Tomcat(Windows版)

在Windows 系统把 Tomcat 作为系统服务来运行。直接打开 Apache Tomcat 的属性对话框,在Java栏添加启动参数:

-agentlib:jdwp=transport=dt_socket,address=1043,server=y,suspend=n

这些参数要做的事情就是启用远程调试和配置有效的选项:

  • 指定运行的被调试应用和调试者之间的通信协议,(ie: transport=dt_socket)
  • 远程被调试应用开通的端口,(ie: address=1043), 可定义其他端口,比如9999
  • server=y 表示这个 JVM 即将被调试
  • suspend=n 用来告知 JVM 立即执行,不要等待未来将要附着上/连上(attached)的调试者。如果设成 y, 则应用将暂停不运行,直到有调试者连接上

suspend=y的一个比较适用的场景是,当debug一个会阻止应用成功启动的问题时, 通过suspend=y可以确保调试者连上来之后再启动应用,否则应用已经启动报错了再调试也没意义了。

注:必须单独占一行

配置Tomcat(CentOS版)

进入到tomcat->bin->catalina.sh文件 在顶部加上如下配置:

CATALINA_OPTS="-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=1099 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Djava.rmi.server.hostname=>>>>>这里写你的服务器公网IP<<<<<
-agentlib:jdwp=transport=dt_socket,address=>>>>>>这里写你的远程调试端口号<<<<<<,suspend=n,server=y"
export CATALINA_OPTS

修改IP地址为自己的服务器公网IP,修改远程调试端口号如9090;

PS:需要特别注意的是,端口号需要在云平台添加安全组才能使用; 如果有使用宝塔的小伙伴,可能还需要在宝塔的安全里开放对应端口

启动方式:(*必须以这种方式启动,否则无法远程调试)

./catalina.sh jpda start

配置IDEA

方法一

Run ➝ Edit Configurations ➝ +按钮 ➝ Tomcat Server ➝ Remote

方法二

Run ➝ Edit Configurations ➝ +按钮 ➝ Remote

如图只需填上自己服务器的IP和上一步配置的端口号(1043)即可

目的达成

稍后录制一个视频放到Bilibili我的主站

参考文档

以上,对乐于分享的程序猿们表示感谢!