A scripting interface for the Java Debugger Interface (JDI).
Right now, jdiscript provides:
-
An event-loop/dispatcher that allows you to specify handlers to respond to events from particular EventRequests.
-
A set of interfaces and a dynamic proxy for chaining Request configuration method calls.
-
A set of single-method handler interfaces that are easy to implement as closures in several of the higher-level languages.
-
Utility classes for launching a new VM and handling its process input and output, or attaching to an existing VM.
-
A top-level script object that allows transparent use of jdiscript features and easy access to frequently used operations.
jdiscript is intended to be used by whichever higher-level JVM language you prefer, and is itself pure Java, with no dependencies outside of jdk6. Some sample Groovy scripts are provided to get you started, but there's no reason you couldn't use JRuby, Clojure, Scala, etc. If you run into problems with your language of choice, or you have ideas for how a common idiom in your language could be better supported by the underlying Java implementation, please let me know.
I'd also love to start collecting generally useful scripts into one place, and creating a comprehensive debugging catalogue that anyone can dip into to help troubleshoot their code more efficiently. If you have one you'd like to share, drop it into a gist and link to it from the wiki page.