IDEA(一)如何在IDEA中远程调试Jar包

项目的部署方式有在本地搭建服务器进行部署,或是将项目在远程服务器上面部署。一般如果在本地搭建服务器的时候,可以直接选择启动或是debug,但是如果项目部署在远程的服务器上面的时候, 我们该如何进行调试呢?

1. 启动jar

在服务器中,通过以下命令启动可执行jar包

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=80 -jar health-test-1.0-SNAPSHOT.jar &

参数含义:
-XDebug 启用调试
-Xnoagent 禁用默认sun.tools.debug调试器
-Djava.compiler=NONE 禁止 JIT 编译器的加载
-Xrunjdwp 加载JDWP的JPDA参考执行实例
transport 用于在调试程序和 JVM 使用的进程之间通讯
dt_socket 套接字传输
server=y/n JVM是否需要作为调试服务器执行
address=2345 调试服务器监听的端口号
suspend=y/n 是否在调试客户端建立连接之后启动 JVM 
注意:-jar参数不能写到-XDebug参数前

IDEA(一)如何在IDEA中远程调试Jar包_第1张图片

2. 配置IDEA

在idea中按顺序打开Run => Edit Configurations => Remote => Configuration,设置 远程调试的项目名字name、远程需要调试机器的IP地址host、对应的端口号port,且与上面保持一致。Transport、Debugger mode保持默认。

IDEA(一)如何在IDEA中远程调试Jar包_第2张图片

3. 开始调试 

在本地项目中设置断点,然后访问远程机器上面的IP和端口,然后就可以在本地debug调试了

IDEA(一)如何在IDEA中远程调试Jar包_第3张图片

4. 问题汇总

(1)No executable code found at line

被调试的服务器需要开启调试模式,服务器端的代码和本地代码必须保持一致,则会造成断点无法进入的问题。

(2)java.net.ConnectException "Connection refused: connect"

ping服务器ip,telnet服务器ip port,如果能ping通但telnet不通,是由于端口无访问权限导致,需要开放80端口访问权限。如果ping不通,考虑是代理、hosts、dns等问题。

(3)centOS7 防火墙关闭但是远程端口无法访问问题

RedHat7的系统即便是关闭防火墙,端口也只开放22,所以在关闭防火墙后,通过物理机仍无法访问虚拟机的808080端口,可以通过firewall启用其他端口的远程访问权限。

添加80端口的访问权限,这里添加后永久生效
#firewall-cmd --zone=public --add-port=80/tcp --permanent
#firewall-cmd --reload
查看80端口访问权限情况
#firewall-cmd --zone=public --query-port=80/tcp
关闭80访问权限
#firewall-cmd --zone=public --remove-port=80/tcp –permanent

 

你可能感兴趣的:(IDEA)