idea远程调试Java项目

idea远程调试Java项目

前言

有时候需要分析排查远程的jar的时候,就需要用到了idea的远程调试分析,下面学习一下这个分析的过程,这里以SpringBoot项目为案例,进行简单学习记录一下。

打包

使用SpringBoot自带一个插件来打包,在pom.xml中添加如下内容即可

1
2
3
4
5
6
7
8
9
10
11
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

直接执行maven打包

image

项目跑起来:java -jar xxx.jar

image

调试配置

下面进行远程调试配置

1.编辑配置

image

2.选择远程jvm(remote)

image

3.填写配置信息

image

1
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50055

启动项目

Linux or Mac

1
2
3
nohup java \
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50055 \
-jar Thymeleaf_SSTI.jar &

Windows

1
2
3
java ^
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50055 ^
-jar Thymeleaf_SSTI.jar.jar

注意⚠️

  • 端口可以随意,但需要保持一致
  • 代码和所运行的jar也需要保持一致
  • 添加nohup&是为了在后台运行

启动

image

idea直接启动dbug之后,在浏览器访问一下页面。成功断点

image

总结

  • idea停止,远程jar还是可以继续运行的。
  • jar包代码和本地不一致会导致项目起不来。
  • System.out 以及 log.info 还是打印在远程的。