使用IDEA进行远程调试

客户端(idea 、eclipse 等)之所以可以进行调试,是由于客户端 和 服务端(程序端)进行了 socket 通信,通信过程如下:

1、先建立起了 socket 连接

2、将断点位置创建了断点事件通过 JDI 接口传给了 服务端(程序端)的 VM,VM 调用 suspend 将 VM 挂起

3、VM 挂起之后将客户端需要获取的 VM 信息返回给客户端,返回之后 VM resume 恢复其运行状态

4、客户端获取到 VM 返回的信息之后可以通过不同的方式展示给客户

使用步骤

步骤1:打开Inteliij IDEA,顶部菜单栏选择Run-> Edit Configurations,进入调试配置界面

步骤2:点击左上角'+'号,选择Remote JVM Debug。分别填写右侧三个红框中的参数:Name,Host(要调试的机器ip),Port(想要指定的远程调试端口)

步骤3:复制Command line arguments for remote JVM的值,点击ok

步骤4:两种方式(建议使用方法一)

方法一:进入服务器端,ps -ef | grep tomcat808x查看运行参数

启动命令 = 复制的红色部分 + idea复制的参数 + 复制的黄色部分

执行组合的启动命令

方法二:进入服务器端的catalina.sh文件,在第一行添加参数

CATALINA_OPTS="idea复制的参数"

重启tomcat即可生效(shutdown.sh /startup.sh)

区别:方法一是永久有效的,只需要配置一次,之后每次启动都是debug启动

方法二是暂时,配置参数才会以debug启动(建议使用方法二)

步骤5:本地IDEA启动debug模式,控制台显示Connected to the target VM, address: '10.144.1.191:5000', transport: 'socket' 即连接成功

注:

远程debug的代码必须与远程部署的代码完全一致,不能发生任何的修改,否则打上的断点将无法命中,切记切记。
这种方式是socket的方式去连远程tomcat的。你需要把端口对外开放。并且他是堵塞式的,同一时间只能支持一台客户端去调试
建议调试时尽快走过断点方法,以免阻塞生产环境的使用
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_42537532/article/details/131857486

posted @ 2024-06-27 16:12  尐鱼儿  阅读(2)  评论(0编辑  收藏  举报