# Knowing your enemies is as important as knowing your friends. Understanding your debugger is a little of both. Have you ever wondered how Java debugging looks on the inside? On our journey to building a Java production-grade debugger, we learned a lot about its internals, quirks and more. During this session, we’ll share how debugging actually works in Java. We’ll discuss Java bytecode instrumentation, giving multiple examples to how this can be accomplished, and dive deep into utilizing the Java Agent API to create a debugger. But this talk is about more than just debuggers - it’s about changing your code as it is running, and understanding the JVM enough to manipulate it without disrupting it.

Talk Level:

Yarden Laifenfeld is a Software Engineer at Rookout. With a deep background in C and embedded Linux environments, you can find her in the office jumping between 6 different programming languages a day. When she’s not busy developing new features and helping out clients, she loves learning about new technology, creating iOS apps and making everything she can automated.