ACM Home Page
Please provide us with feedback. Feedback
Profile-guided program simplification for effective testing and analysis
Full text PdfPdf (434 KB)
Source Foundations of Software Engineering archive
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering table of contents
Atlanta, Georgia
SESSION: Program analysis table of contents
Pages 48-58  
Year of Publication: 2008
ISBN:978-1-59593-995-1
Authors
Lingxiao Jiang  University of California, Davis
Zhendong Su  University of California, Davis
Sponsor
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 12,   Downloads (12 Months): 174,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1453101.1453110
What is a DOI?

ABSTRACT

Many testing and analysis techniques have been developed for inhouse use. Although they are effective at discovering defects before a program is deployed, these techniques are often limited due to the complexity of real-world code and thus miss program faults. It will be the users of the program who eventually experience failures caused by the undetected faults. To take advantage of the large number of program runs carried by the users, recent work has proposed techniques to collect execution profiles from the users for developers to perform post-deployment failure analysis. However, in order to protect users' privacy and to reduce run-time overhead, such profiles are usually not detailed enough for the developers to identify or fix the root causes of the failures.

In this paper, we propose a novel approach to utilize user execution profiles for more effective in-house testing and analysis. Our key insight is that execution profiles for program failures can be used to simplify a program, while preserving its erroneous behavior. By simplifying a program and scaling down its complexity according to its profiles, in-house testing and analysis techniques can be performed more accurately and efficiently, and pragmatically program defects that occur more often and are (arguably) more relevant to users will be given preference during failure analysis. Specifically, we adapt statistical debugging on execution profiles to predict likely failure-related code and use a syntax-directed algorithm to trim failure-irrelevant code from a program, while preserving its erroneous behavior as much as possible. We conducted case studies on a testing engine, CUTE, and a software model checker, BLAST, to evaluate our technique. We used subject programs from the Aristotle Analysis System and the Software-artifact Infrastructure Repository (SIR). Our empirical results show that using simplified programs, CUTE and BLAST find more bugs with improved accuracy and performance: they were able to detect 20 and 21 (out of 139) more bugs respectively in about half of the time as they took on the original test programs.


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
H. Agrawal, J. R. Horgan, S. London, and W. E. Wong. Fault localization using execution slices and dataflow tests. In ISSRE, pages 143--151, 1995.
 
2
3
4
 
5
 
6
D. Binkley and K. B. Gallagher. Program slicing. Advances in Computers, 43:1--50, 1996.
 
7
J. F. Bowring, M. J. Harrold, and J. M. Rehg. Improving the classification of software behaviors using ensembles of control-flow and data-flow classifiers. Technical Report GIT-CERCS-05-10, Georgia Institute of Technology, April 2005.
8
 
9
10
11
12
13
 
14
 
15
16
17
 
18
A. Groce and R. Joshi. Exploiting traces in program analysis. In TACAS, volume 3920 of LNCS, pages 379--393. Springer, 2006.
19
20
21
 
22
T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Software verification with BLAST. In SPIN, volume 2648 of LNCS, pages 235--239, 2003.
 
23
24
25
26
27
 
28
 
29
A. Lal, J. Lim, M. Polishchuk, and B. Liblit. Path optimization in programs and its application to debugging. In ESOP, 2006.
 
30
B. Liblit. The Cooperative Bug Isolation Project. http://www.cs.wisc.edu/cbi/.
 
31
32
33
34
35
 
36
C. Liu, X. Zhang, J. Han, Y. Zhang, and B. K. Bhargava. Failure indexing: A dynamic slicing based approach. In ICSM, pages 382--393, 2007.
 
37
38
 
39
 
40
 
41
 
42
M. Renieris and S. P. Reiss. Fault localization with nearest neighbor queries. In ASE, 2003.
43
 
44
Siemens, M. J. Harrold, and G. Rothermel. Aristotle Analysis System -- Siemens Programs, HR Variants. http://www.cc.gatech.edu/aristotle/Tools/subjects/.
45
 
46
T. Xie, D. Marinov, W. Schulte, and D. Notkin. Symstra: A framework for generating object-oriented unit tests using symbolic execution. In TACAS, pages 365--381, 2005.
47
 
48
A. X. Zheng, M. I. Jordan, B. Liblit, and A. Aiken. Statistical debugging of sampled programs. In Advances in Neural Information Processing Systems 16. 2003.
49

Collaborative Colleagues:
Lingxiao Jiang: colleagues
Zhendong Su: colleagues