Next: Abstraction-Based Debugging Up: The Concert Debugger Users Previous: Examining Program State

The Concert Interpreter

The foregoing section on examining the program state provides a basic mechanism for walking around the state of a Concert program; however, often more intricate or more detailed view is needed. This is the purpose of the Concert Interpreter module of The Concert Debugger . The interpreter has two functions: to facilitate moving around and examining the program state in complex ways, and experimenting with different program strategies by interpreting code that implements them.

Expressions are interpreted in the environment of the current context; that is, all currently bound local variables are scoped and object locking works as if the interpreted expression was executed within the current context, so it inherits locks for invocations on syntactic self. If the current context is an object (see below for how this happens), the variable self is scoped, and the expression is considered a non-exclusive invocation on that object, so it runs regardless of locks on that object held by others.

concert eval
is the basic mechanism of the Concert Interpreter. This command takes a Concert expression and evaluates it in the current context.
concert select
allows the user to move amongst the objects in the program. This command takes a Concert expression, and if it evaluates to an object name, sets the current context to that object.



Next: Abstraction-Based Debugging Up: The Concert Debugger Users Previous: Examining Program State


Julian Dolby
Concurrent Systems Architecture Group