前言

远程调试相对来说还是比较繁琐的,如果可以给jar拿到本地来运行调试,会方便简单很多。

准备

随便准备个JAR即可,比如 https://github.com/halo-dev/halo
下载后得到halo.jar,通过命令java -jar halo.jar即可运行(这个jar运行需要jdk11)
image-20211109102735500

开始调试

新建一个maven空项目,为了运行jar选择用jdk11,其他的随便选选即可
添加配置,选择JAR Application
image-20211109102911159
然后根据实际情况配置
image-20211109103407777
点击Apply,然后就可以在IDEA里面运行这个JAR了
image-20211109104311638
但这个时候还不能调试,还需要添加classes依赖关系


之前也说过,要添加了依赖关系IDEA才会执行这个代码,才能知道你下的断点,才会在那阻断让你分析

先解压这个jar
image-20211109113836302
然后给目录lib添加到依赖中,不然这个jar使用的其他jar依赖不能调试
image-20211109125913790
然后给目录BOOT-INF添加到依赖关系中
image-20211109113918163
然后就可以Debug调试了
下断点有个勾表示成功
image-20211109114248909
成功拦截
image-20211109114318989

最后

虽然说上面已经可以开始调试了,但还是有一些问题
一些函数可能因为不能反编译等等原因,导致找不到,也会影响我们的进程
所以有条件的情况下,可以下载他的源代码,然后给源代码也加入进去(直接点上面的提示choice source file即可)