In this paper, we discuss the integration of an event-based debugger and a state-based debugger within the TAU program control and debugging infrastructure. The combination of approaches is quite powerful. It permits the programmer to use event-based techniques initially in investigating high-level patterns of process interactions and then, as the focus of attention narrows, to switch to a state-based approach in investigating lower-level execution details and relating them to source code constructs. This work extends the use of event-based modeling to object-parallel languages and provides an alternative mechanism for establishing meaningful global breakpoints in object-oriented languages. In addition, it introduces the TAU interaction and control infrastructure which enables Ariadne and Sneaky to interoperate as co-operating clients of a single agent.
The integration of Ariadne and Sneaky provides us with an environment for the assessment of mixed event- and state-based debugging strategies and for the evaluation of event-based modeling techniques in an object-parallel programming environment. In addition, it provides a basis for considering the effects of proposed extensions to object-parallel languages that include multithreading and multitasking.
In particular, multitasking exacerbates the difficulties of using standard mechanisms for setting breakpoints and makes it even more important to have the ability to set breakpoints based on high-level behavioral analysis. At the same time, replay and modeling become more difficult. Replay, in fact, will be prohibitively expensive in many cases and it will be difficult, if not impossible, for programs that make extensive use of library routines. We are currently investigating the possibility of replaying not the entire program but only partial traces of its behavior, limiting the observability of the code. Breakpointing will be relative to this observable behavior. Finally, the addition of tasking to the pC++ programming model will necessitate changes in Ariadne's behavioral modeling. Currently, parallelism is available only at the process level in Ariadne. pC++ contains parallelism at the element level as well but we were able to handle it within our models using iteration. This will not be possible in a more general thread-based model and it will not be possible with multitasking. Further extensions to Ariadne's modeling language that enable the natural expression of levels of parallelism is needed. In addition, we continue to work on the usability of Ariadne's interface and modeling language.
Acknowledgements. Bernd Mohr and Allen Malony designed and implemented much of TAU. Darryl Brown was involved in the early stages of the design of Sneezy; Kurt Windisch wrote much of Sneaky. George Forman, Alfred Hough, Calvin Lin, Lawrence Snyder, and David Stemple all contributed to the initial design of Ariadne.