The debugging features of the JVM are provided via the Java Platform Debugger Architecture (JPDA).
The JPDA itself is composed of the following:
- Java Virtual Machine Tool Interface (JVM TI) – the native programming interface for tools to use. This interface allows for state inspection and helps in controlling the flow of execution within the debuggee.
- Java Debug Wire Protocol (JDWP) – used to define the communication between the debugger and debuggee processes.
- Java Debug Interface (JDI) – this interface allows tool developers to write remote debugger applications.
The diagram listed in the JPDA architecture structure is a good starting point. Additional places to look for would be the guides listed in the JPDA page.