Thomas Groß
ETH Zürich, Switzerland \ Carnegie Mellon University, USA
Download articlePublished in: Proceedings of the 3rd International Workshop on Automatic Debugging; 1997 (AADEBUG-97)
Linköping Electronic Conference Proceedings 1:15, p. 185-191
Linköping Electronic Articles in Computer and Information Science vol. 2 1:15, p. 185-191
Published: 1997-09-10
ISBN:
ISSN: 1650-3686 (print), 1650-3740 (online)
This paper introduces the bisection debugging model. The key idea is to use a debugger to identify the semantic differences between two versions of the same program. The debugger leads the user (programmer) to the region of the source code that is different between the versions and effects erroneous behavior. To implement bisection debugging; a debugger must insert checkpoints around regions of the program that are determined to be different (by; e.g.; a file differencing program). To compare the state of both computations; it is necessary that there are no constraints on where a breakpoint can be set; and the debugger must be able to solve all data value problems at this breakpoint. The quality of the file differencing program has an influence on the execution speed of the debugged program; but not on the correctness of the method. This debugging model is useful if there exists already a correct version of a program (in the sense that its output is acceptable) and subsequent changes have modified this program so that the output is no longer correct.
[1] D. Abramson; I. Foster; J. Michalakes; and R. Sosic. Relative debugging: A new methodology for debugging scientific applications. Comm. ACM; 39(11):69–77; Nov 1996.
[2] A. Adl-Tabatabai. Source-Level Debugging of Globally Optimized Code. PhD thesis; Carnegie Mellon University; 1996. CMU-CS-96-133.
[3] A. Adl-Tabatabai and T. Gross. Source-level debugging of scalar optimized code. In Proc. ACM SIGPLAN’96 Conf. on Prog. Language Design and Implementation; pages 33–43. ACM; May 1996.
[4] H. Agrawal and J. Horgan. Dynamic program slicing. In Proc. ACM SIGPLAN’90 Conf. on Prog. Language Design and Implementation; pages 246–256; White Plains; June 1990. ACM.
[5] K. Gallagher and J. Lyle. Using program slicing in software maintenance. IEEE Trans. Software Eng.; 17(8):751–761; Aug 1991.
[6] J. L. Hennessy. Symbolic debugging of optimized code. ACMTrans. on Prog. Lang. Syst.; 4(3):323–344; July 1982.
[7] M. Kamkar; P. Fritzson; and N. Shahmehri. Interprocedural dynamic slicing applied to interprocedural data flow testing. In Proc. Conf. on Software Maintenance’93; pages 386–395; Montreal; Sept 1993. IEEE.
[8] B. Korel and J. Laski. Dynamic slicing of computer programs. J. Systems and Software; 13(3):187–195; Nov 1990.
[9] R. Wismueller. Debugging of globally optimized programs using data flow analysis. In Proc. ACM SIGPLAN’94 Conf. on Prog. Language Design and Implementation; pages 278–289. ACM; June 1994.