Runtime Systems and Tools: Parallel Debugging
Charm++ offers a variety of parallel debugging options, from the extremely basic to the extremely sophisticated. The traditional debugging methods, such as logging (via the CkPrintf routine) and interactive debugging (via the "++debug" command line option) are supported under Charm++.

In addition, Charm++ offers several additional features designed to simplify application development. Linking with "-memory paranoid" checks all dynamic heap allocation calls for common errors, such as double-delete, random-delete, read-after-delete, buffer over- and under-write errors. Charm++, when compiled without "-DCMK_OPTIMIZE", contains hundreds of assertions to catch invalid parameters and unintialized data passed to API routines.

We are working on a sophisticated parallel debugger, with the ability to set breakpoints, examine variables, objects, and messages across the entire machine. The design of this debugger is described in the paper below.
People
Papers/Talks
10-23
2010
[Paper]
Debugging Parallel Applications via Provisional Execution [PPL Technical Report 2010]
10-22
2010
[PhD Thesis]
Debugging Large Scale Applications with Virtualization [Thesis 2010]
10-12
2010
[Paper]
Robust Non-Intrusive Record-Replay with Processor Extraction [PADTAD 2010]
10-11
2010
[Paper]
Debugging Large Scale Applications in a Virtualized Environment [LCPC 2010]
09-03
2009
[Paper]
Scalable Interaction with Parallel Applications [TeraGrid 2009]
08-08
2009
[Paper]
Dynamic High-Level Scripting in Parallel Applications [IPDPS 2009]
08-06
2008
[Paper]
Memory Tagging in Charm++ [PADTAD 2008]
04-04
2004
[Paper]
Debugging Support for Charm++ [PADTAD 2004]
03-13
2003
[MS Thesis]
Debugging Support for Charm++ [Thesis 2003]
99-04
1999
[Paper]
Multilingual Debugging Support for Data-Driven and Thread-Based Parallel Languages [LCPC 1999]