IntelliJ IDEA 远程调试 Tomcat

idea | 2019-09-13 10:02:39

1.Tomcat 开启 debug 端口 

1.1打开tomcat/bin目录下的catalina.sh文件,windows则是catalina.bat文件。找到下面代码。

if [ "$1" = "jpda" ] ; then
  if [ -z "$JPDA_TRANSPORT" ]; then
    JPDA_TRANSPORT="dt_socket"
  fi
  if [ -z "$JPDA_ADDRESS" ]; then
    JPDA_ADDRESS="8000"
  fi
  if [ -z "$JPDA_SUSPEND" ]; then
    JPDA_SUSPEND="n"
  fi
  if [ -z "$JPDA_OPTS" ]; then
    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
  fi
  CATALINA_OPTS="$JPDA_OPTS $CATALINA_OPTS"
  shift
fi


(可以看到代码JPDA_ADDRESS="8000" 默认的debug端口是8000,如果本地的8000已经被占用,请改成一个未占用的端口号。如果不修改则是默认端口)

所以tomcat默认是配置好debug了的,只需要带上启动参数即可。

在tomcat bin目录下执行命令catalina.bat jpda start,可以启动tomcat并开启远程调试的端口


1.2另外:如果你不想每次启动麻烦,就可以在catalina.sh上面配置命令,然后以后启动一直都是debug模式。

在catalina.sh上面加上如下代码即可。

#!/bin/sh
CATALINA_OPTS="-Xdebug  -Xrunjdwp:transport=dt_socket,address=8002,server=y,suspend=n"
# Licensed to the Apache Software Foundation (ASF) under one or more


2.IntelliJ IDEA 配置远程调试

2.1在工具栏找到服务下拉框然后点击编辑

1.png


2.2点击Edit Configurations,进入如下界面:

1.png


2.3如上图所示,我们进入了Run/Debug Configurations界面,然后点击左上角的+,选择Remote:

1.png


2.4参数说明

标注 1:运行远程 JVM 的命令行参数;

标注 2:传输方式,默认为Socket;

标注 3:调试模式,默认为Attach;

标注 4:服务器 IP 地址,默认为localhost,需要修改为目标服务器的真实 IP 地址;

标注 5:服务器端口号,默认为5005,需要修改为目标服务器的真实端口号;

标注 6:搜索资源是使用的环境变量,默认为<whole project>,即整个项目。

如上图所示,其中 标注 2 和 标注 3 又分别有两种分类,对于 标注 2,


标注 2:传输方式,默认为Socket; 

Socket:macOS 及 Linux 系统使用此种传输方式;

Shared memory: Windows 系统使用此种传输方式。

对于 标注 3,


标注 3:调试模式,默认为Attach; 

Attach:此种模式下,调试服务端(被调试远程运行的机器)启动一个端口等待我们(调试客户端)去连接;

Listen: 此种模式下,是我们(调试客户端)去监听一个端口,当调试服务端准备好了,就会进行连接。

然后,复制 标注 1,即 IntelliJ IDEA 自动生产的命令行参数,然后导入到 Tomcat 的配置文件中。以 Linux 系统为例,导入语句为:


export JAVA_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001'

如果是 Windows 系统,则导入语句为:


set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001

两者的区别在于导入语句的关键字不同以及有无引号,Linux 系统的导入关键字为export,Windows 为set;Linux 的导入值需要用单引号''括起来,而 Windows 则不用。


接下来,修改 Tomcat 的 bin 目录下的catalina.sh文件(如果是 Windows 系统则修改catalina.bat文件),将上述的导入语句添加到此文件中即可.


2.5启动远程调试

调试的后续步骤按正常的调试技巧进行就可以啦,是一样的,注意你需要保证本地代码和线上远程部署的代码是一致的。‘

1.png



登录后即可回复 登录 | 注册
    
关注编程学问公众号