0x01. Java 调试体系JPDA简介
JPDA(Java Platform Debugger Architecture):即Java平台调试体系架构。Java虚拟机设计的专门的API接口供调试和监控虚拟机使用
JPDA按照抽象层次,又分为三层,分别是:
- JVM TI(Java VM Tool Interface):虚拟机对外暴露的接口,包括debug和profile。
- JDWP(Java Debug Wire Protocol):调试器和应用之间通信的协议。
- JDI(Java Debug Interface):Java库接口,实现了JDWP协议的客户端,调试器可以用来和远程被调试应用通信。
0x02. JDWP简介
JDWP(Java DEbugger Wire Protocol):即Java调试线协议,是一个为Java调试而设计的通讯交互协议,它定义了调试器和被调试程序之间传递的信息的格式。说白了就是JVM或者类JVM的虚拟机都支持一种协议,通过该协议,Debugger 端可以和 target VM 通信,可以获取目标 VM的包括类、对象、线程等信息,在调试Android应用程序这一场景中,Debugger一般是指你的 develop machine 的某一支持 JDWP协议的工具例如 Android Studio 或者 JDB,而 Target JVM是指运行在你mobile设备当中的各个App(因为它们都是一个个虚拟机 Dalvik 或者 ART),JDWP Agent一般负责监听某一个端口,当有 Debugger向这一个端口发起请求的时候,Agent 就转发该请求给 target JVM并最终由该 JVM 来处理请求,并把 reply 信息返回