客户端(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' 即连接成功文章来源:https://www.toymoban.com/news/detail-706040.html
注:文章来源地址https://www.toymoban.com/news/detail-706040.html
- 远程debug的代码必须与远程部署的代码完全一致,不能发生任何的修改,否则打上的断点将无法命中,切记切记。
- 这种方式是socket的方式去连远程tomcat的。你需要把端口对外开放。并且他是堵塞式的,同一时间只能支持一台客户端去调试
- 建议调试时尽快走过断点方法,以免阻塞生产环境的使用
到了这里,关于使用IDEA进行远程调试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!