Programming parallel machines need not be hard. A large portion of the computer science community is working to develop tools to ease parallel programming. Split-C, a language developed as part of the Castle effort at Berkeley, extends C to control parallel machines but retains the straightforward translation from source code to executable code necessary for high-performance programming. Mantis, the Split-C debugger, supports the bulk synchronous and individual node viewpoints that together dominate the design of Split-C programs. Mantis combines the flexibility and extensibility of a Tcl/Tk graphical user interface with the stability and functionality of the gdb debugger, providing a simple but highly effective tool for parallel debugging. The user can control execution for all nodes as a group or for each node individually, and can check state and invariants through a variety of methods. The graphical interface is simple enough for new users to understand with minimal effort yet powerful enough to allow experienced users to work effectively. The first version of Mantis runs on the CM-5 and made its debut in the parallel programming course at Berkeley during the Spring 1994 semester.
This document describes Mantis and our experiences in designing and implementing a parallel debugger. Using a straightforward example, we illustrate the process of using Mantis to find both simple and more subtle bugs. After summarizing the features of Mantis, we discuss a range of issues in parallel debugging and our approach to those issues. We follow with our experiences in working with large software systems, in particular the gdb debugger. We continue with a discussion of user interface design, and conclude with commentary on related work and directions for future efforts.