Program Slicing is a well-known decomposition technique that transforms a large program into a smaller one that contains only statements relevant to the computation of a selected function. In this paper, we present a novel predicate-based dynamic slicing algorithm for message passing programs. Unlike the more traditional slicing criteria that focus only on the parts of the program that influence a variable of interest at a specific position in the program, a predicate focuses on those parts of the program that influence the predicate. The dynamic predicate slice captures some global requirements or suspected error properties of a distributed program and computes all statements that are relevant. This article presents an algorithm and a sample computation to illustrate how the predicate slice can be computed. Additionally, we introduce a predicate trace to classify the relevance of statement executions based on the predicate slice. A compressed predicate trace can be used to reveal those instances of statement execution that turn the global predicate true, among others.
Index Terms:
Program slicing, message passing, program comprehension, predicate slice, predicate trace
Citation:
Juergen Rilling, Hon F. Li, Dhrubajyoti Goswami, "Predicate-Based Dynamic Slicing of Message Passing Programs," scam, pp.133, Second IEEE International Workshop on Source Code Analysis and Manipulation (SCAM'02), 2002