Next: Getting Started and
Up: The Concert Debugger Users
Previous: The Concert Debugger Users
Concurrent programming introduces whole new classes of programming
errors in addition to the many already inherent in all programming:
among these are synchronization errors and deadlocks. To facilitate
finding both the new kinds of bugs and the old ones, the Concert
debugger allows one to observe the state of a Concert program at
various stages of its execution.
The Concert Debugger is built atop The GNU Debugger and Emacs. The interface is through
an Emacs-Cadb mode, with a set of ``concert'' commands to make
debugging CA programs easier.
The Concert Debugger provides a complement of debugging capabilities, generalized to
function for concurrent programs; additionally, some new functionality
designed specifically for concurrent programs has been added. The
following list summarized the functionality provided by The Concert Debugger .
- breakpoints
- work much like breakpoints in The GNU Debugger . When a
breakpoint is hit, the entire parallel program is stopped, and the
state is available for examination. Thus, breakpoints are generalized
for concurrent programs by stopping the entire program, rather than
just the node that triggers the break.
- tracing
- facilities are included, but they are substantially
generalized to be more useful in a concurrent environment. Both
message sends and method execution can be traced, because there events
can be distinct in parallel programs.
- expression evaluation
- is analogous to the interpreter provided
by the The GNU Debugger command line. Concert expressions can be given to The Concert Debugger just
as C expressions can be typed into The GNU Debugger
normally.
- a view of concurrent execution
- is synthesized by the debugger
by generalizing the notion of a call-stack. A call tree is provided,
where concurrency is expressed as multiple children of a single
caller. Conventional stack walking functionality is provided for
examining this tree.
- coherent printing
- is an experimental feature; it provides an
interface for specifying print statements that will not be reordered by
arbitrary network and scheduling systems. Furthermore, they do not
require modifying the source code.
- abstraction-based debugging
- is a trace facility that traces
requests to program abstractions. Facilities are provided for
specifying abstractions in terms of their interfaces, and for tracing
the requests and responses to them.
Next: Getting Started and
Up: The Concert Debugger Users
Previous: The Concert Debugger Users
Julian Dolby
Concurrent Systems Architecture Group