Sindarin is a versatile and interactive debugger scripting API for object-oriented programming languages. Sindarin is designed to help building dedicated debugging tools targeting specific problems or domains. To do this, Sindarin attaches to a running process then exposes stepping and introspection operations to control, manipulate and observe that process’ execution. It simplifies the creation of personalized debugging scripts by providing an AST-based API, thus also proposing different stepping granularity over the debugging session. Once written, scripts are extensible and reusable on other scenario, and can be used to build more complex debugging tools.
Research paper: Sindarin: A Versatile Scripting API for the Pharo Debugger
- Steven Costiou (2019 - ...)
- Adrien Vanègue (2022 - 2024)
- Thomas Dupriez (2019 - 2021)
Instanciate a UI-less debugger on your execution, allowing you to manipulate and inspect it via scripting.
The API is on the SindarinDebugger
class.
dbg := SindarinDebugger debug: [<your code>].
"Manipulate and inspect the debugged execution by sending messages to dbg"
dbg step; stepOver.
dbg context inspect.
dbg currentNode inspect.
...
Metacello new
baseline: 'Sindarin';
repository: 'github://pharo-spec/ScriptableDebugger';
load.
Metacello new
baseline: 'Sindarin';
repository: 'github://pharo-spec/ScriptableDebugger:Pharo-11';
load.