[Ariadne Logo]


What is Ariadne?

Ariadne is an event based debugger. Traditionally, we use a state based debugger in debugging sequential programs. In an event based debugger, we model the intended behavior of the parallel program in terms of significant events that characterize its behavior. This model is then compared with the actual execution as captured in event traces by running the program. The matches or mismatches are analysed using querying facilities and then after locating the error, we set a breakpoint and reexecute the program under a deterministic replay system. On reaching the breakpoint, we are free to examine the state of the program using traditional state based debuggers.

What is Event Based Abstraction?

Using event based abstraction, programmers compare actual system behavior with models of expected behavior. To describe the behavior of the program a modeling language is used. Existing techniques are limited by modeling language issues : Expressive modeling languages allow accurate descriptions of complex system behaviors but are difficult for programmer to learn and their recognition properties make it impossible to provide informative feedback on model behavior mismatches.

Ariadne's Approach

In Ariadne, we provide event-based behavioral abstraction and logical time manipulation by combining a simple modeling language together with functional queries. Our simple modeling language is easy to learn and use. Its patterns, however are often too coarse, matching behaviors in unintended ways. To compensate we provide functional queries that give feedback both on matched and unmatched patterns.

To illustrate the features of Ariadne, let us consider an actual parallel program and see how we can locate the bug using both event and state based debugging approaches. We look at a binary image compression algorithm written in an object parallel language pC++.



Sameer Shende <sameer@cs.uoregon.edu>