Concurrent Monitoring, Visualization and Debugging (MVD)
While high-level concurrency constructs, as in μC++, help significantly to reduce errors, concurrent programs still contain both sequential and concurrent errors.
Unfortunately, debugging concurrent programs can be extremely difficult due to the temporal nature of concurrent execution, which introduces errors such as deadlock and race conditions, and algorithmic design errors, such as inhibiting concurrency, all unknown in the sequential domain.
Hence, additional support is required or only expert programmers will be able to develop concurrent applications.
The MVD project is constructing a toolkit (based on μC++) for monitoring and visualizing parallelism in a concurrent program, and other tools to determine how and why a concurrent program failed.
Currently, the toolkit supports the following:
-
A general facility to construct statistical monitoring tools.
Monitoring tools can be connected to a set of Motif/X visualization tools to display monitored results.
Statistical monitoring and visualization occurs in real-time, or monitored data can be written to a file for post-processing visualization.
These tools have been used to build simple animations for concurrent programs.
-
An event-based observation facility that is connected to a powerful post-processing event-replay facility being developed by David Taylor, Jay Black and Thomas Kunz.
All μC++ objects can have certain critical actions traced by simply compiling the program with an appropriate flag.
-
A multi-threaded debugger for multi-threaded applications.
The novel aspect of this debugger is the ability to independently control user-level threads while interacting asynchronously with the user.
Independent control allows user-level threads not stopped by the debugger to continue execution normally.
To provide asynchronous interaction on UNIX systems requires that part of the debugger be distributed into the application.
Interestingly, once part of the debugger is placed in the application, it can be used to implement several debugging operations locally, which improves performance by 3 orders of magnitude in most cases.
Papers
-
A Multi-Threaded Debugger for Multi-Threaded Applications (pdf) (ps.gz) by Martin Karsten, Diplomarbeit
-
Debugging Concurrent Programs (ps.gz) by Jun Shih, M.Math Thesis
-
"KDB: A Multi-threaded Debugger for Multi-threaded Applications" (pdf) (ps.gz) by Peter A. Buhr, Martin Karsten and Jun Shih
-
Profiling Concurrent Programs (pdf) (ps.gz) by Robert Denda, Diplomarbeit
-
"μProfiler: Profiling User-Level Threads in a Shared-Memory Programming Environment" (pdf) (ps.gz) by Peter A. Buhr and Robert Denda
-
Replay of Concurrent Shared-Memory Programs (pdf) (ps.gz) by Oliver Schuster, Diplomarbeit
-
Analyzing Multi-Threaded Program Performance with μProfiler (pdf) (ps.gz) by Dorota Zak, M.Math Thesis
-
Profiling Concurrent Programs Using Hardware Counters (pdf) by Josh Lessard, M.Math Thesis
-
μProfiler: A Concurrent Profiler for Concurrent C++ (μC++) (pdf) by Justyna Gidzinski, M.Math Thesis
Back to μSystem Home Page