|
ABSTRACT
Software debugging is the process of locating and correcting faulty code. Prior techniques to locate faulty code either use program analysis techniques such as backward dynamic program slicing or exclusively use delta debugging to analyze the state changes during program execution. In this paper, we present a new approach that integrates the potential of delta debugging algorithm with the benefit of forward and backward dynamic program slicing to narrow down the search for faulty code. Our approach is to use delta debugging algorithm to identify a minimal failure-inducing input, use this input to compute a forward dynamic slice and then intersect the statements in this forward dynamic slice with the statements in the backward dynamic slice of the erroneous output to compute a failure-inducing chop. We implemented our technique and conducted experiments with faulty versions of several programs from the Siemens suite to evaluate our technique. Our experiments show that failure-inducing chops can greatly reduce the size of search space compared to the dynamic slices without significantly compromising the capability to locate the faulty code. We also applied our technique to several programs with known memory related bugs such as buffer overflow bugs. The failure-inducing chop in several of these cases contained only 2 to 4 statements which included the code causing memory corruption.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
|
| |
2
|
|
| |
3
|
|
| |
4
|
H. Agrawal, J. Horgan, S. London, and W. Wong, "Fault localization using execution slices and dataflow tests," Sixth IEEE International Symposium on Software Reliability Engineering (ISSRE), pages 143--151, 1995.
|
| |
5
|
AskIgor, Automated Debugging Service. http://www.st.cs.uni-sb.de/askigor/
|
| |
6
|
|
 |
7
|
|
| |
8
|
Diablo Is A Better Link-time Optimizer. http://www.elis.ugent.be/diablo/
|
 |
9
|
|
 |
10
|
|
| |
11
|
M. J. Harrold,, G. Rothermel, K. Sayre, R. Wu, and L. Yi, "An empirical investigation of the relationship between spectra differences and regression faults,"Journal of Software Testing Verification and Reliability, 10(3):171--194, 2000.
|
| |
12
|
H. He and N. Gupta, "Automated Debugging using Path-Based Weakest Preconditions," Fundamental Approaches to Software Engineering (FASE), ETAPS Joint Conference, Barcelona, Spain, March 29--31, 2004.
|
| |
13
|
|
| |
14
|
Monica Hutchins , Herb Foster , Tarak Goradia , Thomas Ostrand, Experiments of the effectiveness of dataflow- and controlflow-based test adequacy criteria, Proceedings of the 16th international conference on Software engineering, p.191-200, May 16-21, 1994, Sorrento, Italy
|
| |
15
|
Information Week, Issue on Software Quality, Jan 21, 2002.
|
 |
16
|
|
| |
17
|
|
| |
18
|
B. Korel and J. Rilling, "Application of dynamic slicing in program debugging," 3rd International Workshop on Automatic Debugging (AADEBUG), Linkoping, 1997.
|
 |
19
|
Ben Liblit , Alex Aiken , Alice X. Zheng , Michael I. Jordan, Bug isolation via remote program sampling, Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation, June 09-11, 2003, San Diego, California, USA
|
 |
20
|
|
| |
21
|
M. Renieris and S. Reiss, "Fault localization with nearest neighbor queries,"Automated Software Engineering (ASE), 2003.
|
| |
22
|
The Unravel Project. http://hissa.nist.gov/unravel/
|
| |
23
|
Valgrind. http://valgrind.org/
|
| |
24
|
M. Weiser, "Program slicing," IEEE Transactions on Software Engineering (TSE), Vol. SE-10, No. 4, pages 352--357, 1982.
|
 |
25
|
|
 |
26
|
|
 |
27
|
|
| |
28
|
|
| |
29
|
|
| |
30
|
|
 |
31
|
Xiangyu Zhang , Haifeng He , Neelam Gupta , Rajiv Gupta, Experimental evaluation of using dynamic slices for fault location, Proceedings of the sixth international symposium on Automated analysis-driven debugging, p.33-42, September 19-21, 2005, Monterey, California, USA
[doi> 10.1145/1085130.1085135]
|
 |
32
|
|
| |
33
|
Pin Zhou , Wei Liu , Long Fei , Shan Lu , Feng Qin , Yuanyuan Zhou , Samuel Midkiff , Josep Torrellas, AccMon: Automatically Detecting Memory-Related Bugs via Program Counter-Based Invariants, Proceedings of the 37th annual IEEE/ACM International Symposium on Microarchitecture, p.269-280, December 04-08, 2004, Portland, Oregon
[doi> 10.1109/MICRO.2004.3]
|
CITED BY 15
|
|
|
Andreas Leitner , Manuel Oriol , Andreas Zeller , Ilinca Ciupa , Bertrand Meyer, Efficient unit test case minimization, Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering, November 05-09, 2007, Atlanta, Georgia, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Maximilian Stoerzer , Barbara G. Ryder , Xiaoxia Ren , Frank Tip, Finding failure-inducing changes in java programs using change classification, Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering, November 05-11, 2006, Portland, Oregon, USA
|
|
|
|
|
|
|
|