import org.scaladebugger.api.dsl._ val s: ScalaVirtualMachine = _ // Now implicitly added, normal method is getOrCreateBreakpointRequest(...) s.forBreakpoint(...)
import org.scaladebugger.api.dsl.BreakpointDSL val s: ScalaVirtualMachine = _ // Does same thing as other DSL implicit s.forBreakpoint(...)
// Looks weird by itself val b = s.forBreakpoint(...) // Looks better by itself (even though verbose) and explains what is going on val b = s.getOrCreateBreakpointRequest(...) // In another file b.map(...).foreach(...)
Debugging is a powerful technique to aid in software development; so, why is Scala support still stuck in the dark ages? Traditional Java debuggers struggle with Scala's structure and current Scala tooling lacks the advancements in debugging found in other languages!
In this talk, we will venture into the Scala Debugger project. Specifically, we will dive into the core API and its design as well as how it is leveraged in Ensime and other standalone tools. From there, we will discuss a variety of "power features" found in other debug tooling and how they could be adapted for use with Scala. Additionally, we will cover several topics of exploration in the JVM debug space. Finally, we will close with the current state and roadmap for the Scala Debugger project.