With this post we’ll explore how Java / Scala debuggers we use everyday are written and work. We'll cover the two key components in the JVM Debugging Architecture - the Java Debugger Wire Protocol(JDWP) and the JVM Tooling Interface (JVMTI) C++ API. Each comes with its own set of capabilities and disadvantages.