JVM遠端DEBUG
阿新 • • 發佈:2019-01-02
JPDA(Java Platform Debugger Architecture)為Java平臺上的偵錯程式定義了一個標準的體系結構。該體系結構包括3個主要組成部分:JVM TI、JDI和JDWP。
JVM TI的全稱是Java Virtual Machine Tool Interface,它定義了JVM為了支援除錯而必須提供的功能及相應的訪問介面。這些訪問介面是以本地語言的形式提供的,由JVM(比如Sun公司的HotSpot VM)負責實現。
JDI的全稱是Java Debug Interface,它定義了訪問JVM TI介面的高層API,以純Java語言提供,由JDK實現(在Sun JDK的tools.jar可以找到)。偵錯程式直接使用JDI來實現除錯的功能。與JPDA back-end相對應,JDI實現的角色就是JPDA front-end。
JDWP的全稱是Java Debug Wire Protocol,它定義了JPDA front-end和JPDA back-end之間通訊資訊的二進位制格式。這裡的通訊資訊主要包括兩種:偵錯程式傳送給JVM的請求資訊和JVM傳送給偵錯程式的除錯資訊。
總結一下,偵錯程式呼叫JDK提供的JDI實現 (JPDA front-end),經由JDWP協議 ,和JVM自帶的JPDA back-end(jdwp.dll, jdwp.so, ...)進行通訊。JPDA back-end 通過呼叫JVM TI介面 ,從而獲知除錯資訊,或傳送控制命令。然後,JPDA back-end 將除錯資訊或命令執行結果,通過JDWP協議 ,返回給偵錯程式 。