问题:
步骤:
1.通过命令启动调试jar文件:(端口5005可以修改)
运行命令:java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 test.jar
执行后显示:Listening for transport dt_socket at address: 5005
-XDebug 启用调试
-Xrunjdwp 加载JDWP的JPDA参考执行实例。
transport 用于在调试程序和 VM 使用的进程之间通讯。
dt_socket 套接字传输。
server=y/n VM是否需要作为调试服务器执行。
address=5005调试服务器监听的端口号。
suspend=y/n 是否在调试客户端建立连接之后启动 VM ,y会阻塞程序运行直到IDEA远程连接上。
2.在IDEA上创建一个"Remote",配置对应远程调试IP和端口,其他选项可以默认。再以debug的方式启动调试。
Debug启动后:Connected to the target VM, address: '192.168.11.184:5005', transport: 'socket'
问题:
在发布项目时,经常以war包的方式部署到Tomcat里面运行,查找问题非常不方便,可以采用IDEA远程调试war项目。
步骤:
1.配置Tomca启动脚本
在Tomcat脚本添加如下配置 $tomcat_home/bin/catalina.sh
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
2.在IDEA上创建一个"Remote",配置对应远程调试IP和端口,其他选项可以默认。再以debug的方式启动调试。
Debug启动后:Connected to the target VM, address: '192.168.11.184:5005', transport: 'socket'
war包调试配置 $tomcat_home/bin/catalina.sh
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
3.在springboot插件依赖中可以添加如下插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
</jvmArguments>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>