DUCT: An Interactive Define-Use Chain Navigation Tool for Relative Debugging

This paper describes an interactive tool that facilitates following define-use chains in large codes. The motivation for the work is to support relative debugging, where it is necessary to iteratively refine a set of asser-tions between different versions of a program. DUCT is novel because it exploits the Microsoft Intermediate Language (MSIL) that underpins the .NET Framework. Accordingly, it works on a wide range of programming languages without any modification. The paper describes the design and implementation of DUCT, and then illustrates its use with a small case study.

[1]  Riccardo Sisto,et al.  Using data flow analysis to infer type information in Java bytecode , 2001, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation.

[2]  Ken Kennedy,et al.  Efficient call graph analysis , 1992, LOPL.

[3]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[4]  Roland H. Untch,et al.  Bytecode-based Java program analysis , 1999, ACM-SE 37.

[5]  David Grove,et al.  Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis , 1995, ECOOP.

[6]  David Abramson,et al.  A debugging and testing tool for supporting software evolution , 2004, Automated Software Engineering.

[7]  Jianjun Zhao Dependence analysis of Java bytecode , 2000, Proceedings 24th Annual International Computer Software and Applications Conference. COMPSAC2000.

[8]  David F. Bacon,et al.  Fast static analysis of C++ virtual function calls , 1996, OOPSLA '96.

[9]  David Abramson,et al.  Relative debugging: a new methodology for debugging scientific applications , 1996, CACM.

[10]  Suraj C. Kothari,et al.  Program Slice Browser , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[11]  Thomas W. Reps,et al.  Demand interprocedural dataflow analysis , 1995, SIGSOFT FSE.

[12]  David Abramson,et al.  Guard: A Relative Debugger , 1997, Softw. Pract. Exp..

[13]  Mary Lou Soffa,et al.  Efficient computation of interprocedural definition-use chains , 1994, TOPL.

[14]  Laurie J. Hendren,et al.  Practical virtual method call resolution for Java , 2000, OOPSLA '00.

[15]  Rajiv Gupta,et al.  A practical framework for demand-driven interprocedural data flow analysis , 1997, TOPL.

[16]  Eugene H. Spafford,et al.  Debugging with dynamic slicing and backtracking , 1993, Softw. Pract. Exp..

[17]  Susan Elliott Sim,et al.  A structured demonstration of program comprehension tools , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[18]  David Abramson,et al.  Relative Debugging and its Application to the Development of Large Numerical Models , 1995, Proceedings of the IEEE/ACM SC95 Conference.