idea debug等待服务器响应,idea配置远程debug

所谓的远程调试就是服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须和远程服务器运行的代码一致)中设置断点,每当有请求到远程服务器时时能够在本地知道远程服务端的此时的内部状态。下面介绍一下Intellij IDEA下对Springboot类型的项目的远程调试功能。

IDEA远程DEBUG Tomcat很简单,配置如下:

1.修改tomcat服务器配置

打开tomcat/bin/catalina.sh

在空白处添加如下参数

linux添加如下配置

CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=xxx.xxx.xx.xx:60222,suspend=n,server=y"

Windows添加配置如下

tomcat启动之前,修改tomcat\bin\catalina.bat文件,设置调试端口

rem ---------------------------------------------------------------------------此为注释

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

说明:address为tomcat服务器ip地址,这里必须填上(如果是局域网ip,就填局域网ip,如果不填ip,可能启动会用127.0.0.1这个回环地址,导致DEBUG失败)。端口号随便定义,没被占用即可

添加完成后,保存修改。

以catalina.sh的方式启动tomcat

sh catalina.sh start

至此,服务器端配置完毕

SpringBoot下远程debug调试

填写name,配置Host地址(远程服务器地址)和端口(选一个未被占用的端口)。然后复制For JDK1.4.x下面的参数,示例配置的端口为5005:

2b0d1e65f4e2

image.png

图片参数设置如下

#Command line arguments for running remote JVM

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

#For JDK 1.4X

-Xdebug -XrunJdwp:transport=dt_socket,server=y,suspend=n,address=5005

#For JDK 1.3x or earlier

-Xnoagent -Djava.compiler=NONE -Xdebug

-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

*** 参数说明***

(1) transport

指定运行的被调试应用和调试者之间的通信协议,它由几个可选值:

dt_socket:主要的方式,采用 socket 方式连接

dt_shmem:采用共享内存方式连接,仅支持 Windows 平台(暂未验证)

(2) server

当前应用作为调试服务端还是客户端,默认为 n。

如果你想将当前应用作为被调试应用,设置该值为 y;如果你想将当前应用作为客户端,作为调试的发起者,设置该值为 n。

(3) suspend

当前应用启动后,是否阻塞应用直到被连接,默认值为 y。

在大部分的应用场景,这个值为 n,即不需要应用阻塞等待连接。一个可能为 y 的应用场景是,你的程序在启动时出现了一个故障,为了调试,必须等到调试方连接上来后程序再启动。

(3) address

暴露的调试连接端口,默认值为 8000。

(4) onthrow

当程序抛出设定异常时,中断调试。

(5) onuncaught

当程序抛出未捕获异常时,是否中断调试,默认值为 n。

(6) launch

当调试中断时,执行的程序。

(7) timeout

该参数限定为 java -agentlib:jdwp=… 可用,单位为毫秒ms。

当 suspend = y 时,该值表示等待连接的超时;当 suspend = n 时,该值表示连接后的使用超时。

***参考实例***

-agentlib:jdwp=transport=dt_socket,server=y,address=8000

以 Socket 方式监听 8000 端口,程序启动阻塞(suspend的默认值为y)直到被连接。

-agentlib:jdwp=transport=dt_socket,server=y,address=localhost:8000,timeout=5000

以 Socket 方式监听 8000 端口,当程序启动后5秒无调试者连接的话终止,程序启动阻塞(suspend的默认值为y)直到被连接。

-agentlib:jdwp=transport=dt_shmem,server=y,suspend=n

选择可用的共享内存连接地址并使用 stdout 打印,程序启动不阻塞。

-agentlib:jdwp=transport=dt_socket,address=myhost:8000

以 socket 方式连接到 myhost:8000上的调试程序,在连接成功前启动阻塞。

-agentlib:jdwp=transport=dt_socket,server=y,address=8000,onthrow=java.io.IOException,launch=/usr/local/bin/debugstub

以 Socket 方式监听 8000 端口,程序启动阻塞(suspend的默认值为y)直到被连接。当抛出 IOException 时中断调试,转而执行 usr/local/bin/debugstub程序。

经过以上步骤,已经获得了启动远程服务器的参数。在启动springboot时默认使用java命令来启动。

java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 springboot-test-1.0-SNAPSHOT.jar

#这样服务端就监听在5005端口了。可以通过以下命令来检查是否监听成功:

netstat -anp | grep 5005

#通过以上步骤已经完成了服务器端参数的添加。下面启动刚才配置的Remote服务,即test-spring。在启动时候我们会发现此项启动程序只有debug启动模式。

#启动完成,对需要debug的代码打上断点,剩下的操作步骤就是访问远程服务器对应的业务请求,本地就会同步debug。其余的操作与本地debug相同

2.IDEA配置

如图

第一步,Edit Configurations

2b0d1e65f4e2

image.png

第二步 Add New Configuration >> Tomcat Server >> Remote

2b0d1e65f4e2

image.png

第三步,修改配置,如图

2b0d1e65f4e2

image.png

第四步,点击Startup/Connection >> Debug,修改Port为第一步设置的端口,这里是60222

2b0d1e65f4e2

image.png

第五步,Debug启动IDEA Tomcat,控制台打印如下信息,则表示启动成功,就可以开始远程debug啦

2b0d1e65f4e2

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值