Production debugging is hard, and it’s getting harder. With architectures becoming more distributed and code more asynchronous, pinpointing and resolving errors in production is no child's game. This session will cover advanced techniques that Java, Scala and Clojure developers can use to debug live servers and resolve critical errors in production quickly.We'll explore five crucial techniques for distributed and reactive logging, and some of the pitfalls that make resolution much more difficult (and even lead to downtime). We'll then dive into more advanced techniques and powerful tools for capturing live state from a production JVM without deploying new code, restarting the application or attaching a debugger.