IDEA远程调试Docker中的Jar包
IDEA远程调试Docker中的Jar包
一直以来遇到Jar包的调试和反编译问题都有点搞心态,总是在逃避这个问题,但是不解决问题就会停滞不前,因此今天有空研究了一下这个问题。
Jar包调试原理
- JDI:Java调试接口
- JDWP:Java调试网络协议
调试过程如下:
- 建立Socket连接
- IDEA将断点信息通过JDWP协议传递给JVM的JDI接口,JVM遇到断点会挂起
- JVM挂起后将信息返回给IDEA,然后继续运行Java程序
IDEA调试过程
Docker配置
以Vulhub中Shiro的CVE-2020-1957为例,
原始的docker-compose.yml
1 |
|
可以看到程序只启动了8080端口,我们对其进行修改:
1 |
|
可以看到我们加了调试命令和端口
IDEA配置
我们需要下载Docker中的shirodemo-1.0-SNAPSHOT.jar
,然后添加到IDEA的库中
需要注意的是Vulhub中的Jar包有些区别,我们需要自己添加源代码的路径
另外我们需要配置远程调试环境:
最终效果:
参考
https://blog.csdn.net/haduwi/article/details/126296308
IDEA远程调试Docker中的Jar包
https://d4wnnn.github.io/2023/09/22/Others/IDEA远程调试Docker中的Jar包/