如何使用idea远程debug

当需要调试远程服务器上的代码时,就需要进行远程debug。java远程调试功能可导致远程执行任意命令,默认情况下在生产禁止使用。如有需要在生产环境使用,则必须监听在127.0.0.1,避免被远程调用。

(1)开启远程调试参数:

        修改远程服务器的tomcat配置文件startenv.sh,添加如下内容:

export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=127.0.0.1:50001"

开启java debug服务有两种方式,启动时的参数参考以下其中一种即可:

命令1:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:<port>

命令2:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=127.0.0.1:<port>

注:port可随便写,只要和socat监听的端口号一致就行。

(2)登录服务器使用socat进行端口映射:

命令:socat TCP4-LISTEN:<listen_port>,fork,range=<source_ip>/32 TCP4:127.0.0.1:<dest_port>
例:socat TCP4-LISTEN:50002,fork,range=10.86.35.78/32 TCP4:127.0.0.1:50001

<listen_port>:socat监听端口

<source_ip>:本地ip,执行调试的客户机ip

<dest_port>:java debug监听的端口

若机器上没有socat程序,则使用下列命令安装:

sudo yum install socat

 

(3)设置idea远程调试Host:

在Run/Debug Configurations,将其host填写为需要远程debug服务器的ip,port为50002

如何使用idea远程debug

 

(4)重启tomcat:

sudo /home/q/tools/bin/restart_tomcat.sh 项目路径

 

举个例子:

服务器的 ip 地址为192.168.254.198, 本机的ip地址为10.86.14.35,且服务器的java debug服务监听到 127.0.0.1:50001 端口。此时若想用本机连接服务器进行远程调试,需:

1、修改tomcat配置文件startenv.sh:

export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=127.0.0.1:50001"


2、登陆服务器使用socat进行端口映射:

socat TCP4-LISTEN:50002,fork,range=10.86.14.35/32 TCP4:127.0.0.1:50001


3、在idea中设置远程调试的Host ip为192.168.254.198,端口为50002