The primary goal of the parallel debugger is to provide an integrated
debugging environment which allows the programmer to examine the
changing state of the parallel program during the course of its
execution.
The CHARM++ debugging system has a number of useful features for
CHARM++ programmers. The system includes a Java GUI client program
which runs on the programmer's desktop, and a CHARM++ parallel
program which acts as a server. The client and server need not be on
the same machine, and communicate over the network using a secure
protocol described in
http://charm.cs.uiuc.edu/manuals/html/converse/5_CONVERSE_Client_Server_In.html
The system provides the following features:
Provides a means to easily access and view the major programmer
visible entities, including array elements and messages in queues,
across the parallel machine during program execution. Objects and messages
are extracted as raw data, and interpreted by the debugger, as explained
in .
Provides an interface to set and remove breakpoints on remote
entry points, which capture the major
programmer-visible control flows in a CHARM++ program.
Provides the ability to freeze and unfreeze the execution of
selected processors of the parallel program, which allows a
consistent snapshot by
preventing things from changing as they are examined.
Provides a way to attach a sequential debugger to a specific
subset of processes of the parallel program during execution,
which keeps a manageable number of sequential debugger windows open.
Currently these windows are opened independently of the GUI interface,
while in the future they will be transformed into an integrated view.
The debugging client provides these features via
extensive support built into the CHARM++ runtime.