Modeling Programs with Unstructured Control Flow for Debugging

Even with modern software development methodologies, the actual debugging of source code, i.e., location and identification of errors in the program when errant behavior is encountered during testing, remains a crucial part of software development. To apply model-based diagnosis techniques, which have long been state of the art in hardware diagnosis, for automatic debugging, a model of a given program must be automatically created from the source code. This work describes a model that reflects the execution semantics of the Java language, including exceptions and unstructured control flow, thereby providing unprecedented scope in the application of model-based diagnosis to programs. Besides the structural model building process, a behavioral description of some of the model components is given. Finally, impacts of the modeling decisions on the diagnostic process are considered.

[1]  Daniel Jackson Aspect: detecting bugs with abstract dependences , 1995, TSEM.

[2]  Ehud Shapiro,et al.  Algorithmic Program Debugging , 1983 .

[3]  Saurabh Sinha,et al.  Analysis and Testing of Programs with Exception Handling Constructs , 2000, IEEE Trans. Software Eng..

[4]  Ulrich Junker Conflict Detection for Arbitrary Constraint Propagation Algorithms , 2001 .

[5]  Markus Stumptner,et al.  Modeling Java Programs for Diagnosis , 2000, ECAI.

[6]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[7]  Markus Stumptner,et al.  Model-Based Debugging or How to Diagnose Programs Automatically , 2002, IEA/AIE.

[8]  Markus Stumptner,et al.  Consistency-based diagnosis of configuration knowledge bases , 1999, Artif. Intell..

[9]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[10]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

[11]  Markus Stumptner,et al.  Debugging of Java Programs using a model-based approach , 1999 .

[12]  Markus Stumptner,et al.  Towards an Integrated Debugging Environment , 2002, ECAI.

[13]  Markus Stumptner,et al.  Using Design Information to Identify Structural Software Faults , 2001, Australian Joint Conference on Artificial Intelligence.

[14]  Franz Wotawa,et al.  A Value-Based Diagnosis Model for Java Programs , 2000 .

[15]  Keshav Pingali,et al.  Dependence-based program analysis , 1993, PLDI '93.

[16]  Raymond Reiter,et al.  A Theory of Diagnosis from First Principles , 1986, Artif. Intell..

[17]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[18]  Franz Wotawa,et al.  On the relationship between model-based debugging and program slicing , 2002, Artif. Intell..

[19]  Daniele Theseider Dupré,et al.  Model-Based Diagnosis Meets Error Diagnosis in Logic Programs , 1993, IJCAI.

[20]  Markus Stumptner,et al.  Using Model-Based Reasoning for Locating Faults in VHDL Designs , 2000, Künstliche Intell..

[21]  Markus Stumptner,et al.  Can AI help to improve debugging substantially? Debugging Experiences with Value-Based Models , 2002, ECAI.