首先,远程debug需要项目的启动,我这边采用的是docker构建镜像的方式,也可以使用传统jar包命令的方式;然后需要明确一个东西,就是远程debug暴露的端口不是项目端口,而是jvm端口。
这边给出我构建镜像使用的dockerfile:
FROM openjdk:11
LABEL maintainer="zhuiliDylan"
VOLUME /usr/docker
ADD {jar包名称}.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005","/app.jar"]
dt_socket:使用的通信方式
server:是主动连接调试器还是作为服务器等待调试器连接
suspend:是否在启动JVM时就暂停,并等待调试器连接
address:地址和端口,地址可以省略,两者用冒号分隔
构建镜像启动容器后就可以使用远程debug去调试
打开本地项目选择增加启动类Remote JVM Debug
添加一个启动类,输入IP地址和端口号,默认暴露5005,ip地址就是你的服务器或虚拟机地址,这里可能会出现一个问题,就是连接被拒绝,这个时候可以用电脑的cmd,
使用telnet ip 5005,例如telnet 127.0.0.1 5005,注意中间ip和端口之间是空格,去连一下本机和服务器 或者虚拟机的端口是不是能连通的,如果不行:
(这里的telnet命令windows需要打开自带的客户端,这里可以去网上搜索一下,切记打开了需要重启电脑)
虚拟机需要使用虚拟机网络编辑器,在虚拟机编辑选项里面:
![](https://img-blog.csdnimg.cn/679504b15a334066b3fbde5ee7b65820.png
我这里使用NAT连接的,可以点击NAT设置
添加一个虚拟机ip映射主机ip地址,将暴露的端口映射到主机上,然后调整主机防火墙入站规则添加暴露5005端口,找到控制面板中系统安全的防火墙:
点击高级设置
点击右侧新建规则,再点击端口
一直点下一步,暴露5005端口,就可以试试能不能telnet通虚拟机,然后进行远程debug调试。
如果是服务器的话只需要操作防火墙连接。