The Scala Debugger project encompasses several different subprojects geared towards providing a Scala abstraction on top of the Java debugger interface.

Described below are the different subprojects contained underneath the Scala Debugger project.

Scala Debugger API

Contains the core logic and abstractions to use debugging features programmatically in Scala including setting breakpoints and stepping through code.

val fileName = "file.scala"
val lineNumber = 37

).foreach(breakpointEvent => {
  val f = breakpointEvent.fileName
  val l = breakpointEvent.lineNumber

  println(s"Reached breakpoint $$f:$$l")

Scala Debugger Tool (SDB)

Contains REPL logic to provide an interactive, JDB-like interface using the Scala Debugger API.

Scala Debugger Language

Contains parser and interpreter logic to provide a programming language that is used as the command interface for the Scala Debugger Tool.

myFunc := func(a, b) {
  a + b

result := myFunc 3 9

print("Result is " ++ result)

Scala Debugger sbt Plugin

Contains an implementation of an sbt plugin that runs the interactive Scala Debugger Tool from within sbt.

Scala Debugger Docs

Contains a static site generator to build the Scala Debugger website.

sbt 'scalaDebuggerDocs/run --generate --serve --allow-unsupported-media-types'