Debug Concurrent Programs with Visualization and Inference of Event Structure
Xiaoquan Wu, Jun Fang Wei, Xu Wang · 2012
Owing to the inherent non-determinism of concurrent programs, traditional debugging techniques are not sufficient, especially in the scene of postmortem debugging. Exploring defects through static analysis can avoid the high cost of failure reproduction. In this paper, we present a novel debugging method for concurrency bugs. We make use of information in bug reports and slicing techniques, construct an event structure model from Java program to reveal the program behaviors related to the suspicious variables and methods identified from bug reports. Utilize the nature of event structure, we extract a small but sufficient subset from all possible execution traces and visualize them with a graph. This method can effectively help to comprehend concurrent system and assist in locating concurrency bugs. We have implemented a tool called JESVisT (Java event structure visualization Tool) to support this method based on open-source projects Bandera and Indus.