[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1109/ASE.2013.6693096acmconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
Article

Lightweight control-flow instrumentation and postmortem analysis in support of debugging

Published: 11 November 2013 Publication History

Abstract

Debugging is difficult and costly. As a human programmer looks for a bug, it would be helpful to see a complete trace of events leading to the point of failure. Unfortunately, full tracing is simply too slow to use in deployment, and may even be impractical during testing.
We aid post-deployment debugging by giving programmers additional information about program activity shortly before failure. We use latent information in post-failure memory dumps, augmented by low-overhead, tunable run-time tracing. Our results with a realistically-tuned tracing scheme show low enough overhead (0-5%) to be used in production runs. We demonstrate several potential uses of this enhanced information, including a novel postmortem static slice restriction technique and a reduced view of potentially-executed code. Experimental evaluation shows our approach to be very effective, such as shrinking stack-sensitive interprocedural static slices by 49-78% in larger applications.

References

[1]
H. Agrawal and J. R. Horgan, "Dynamic program slicing," in Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation, ser. PLDI '90. New York, NY, USA: ACM, 1990, pp. 246-256.
[2]
H. Agrawal, R. A. DeMillo, and E. H. Spafford, "Dynamic slicing in the presence of unconstrained pointers," in Proceedings of the symposium on Testing, analysis, and verification, ser. TAV4. New York, NY, USA: ACM, 1991, pp. 60-73.
[3]
G. Ammons, T. Ball, and J. R. Larus, "Exploiting hardware performance counters with flow and context sensitive profiling," in Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation, ser. PLDI '97. New York, NY, USA: ACM, 1997, pp. 85-96.
[4]
P. Anderson, T. Reps, and T. Teitelbaum, "Design and implementation of a fine-grained software inspection tool," IEEE Trans. Softw. Eng., vol. 29, no. 8, pp. 721-733, Aug. 2003.
[5]
T. Apiwattanapong and M. J. Harrold, "Selective path profiling," in Proceedings of the 2002 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, ser. PASTE '02. New York, NY, USA: ACM, 2002, pp. 35-42.
[6]
P. Arumuga Nainar and B. Liblit, "Adaptive bug isolation," in ICSE (1), J. Kramer, J. Bishop, P. T. Devanbu, and S. Uchitel, Eds. ACM, 2010, pp. 255-264.
[7]
T. Ball and J. R. Larus, "Efficient path profiling," in Proceedings of the 29th annual ACM/IEEE international symposium on Microarchitecture, ser. MICRO 29. Washington, DC, USA: IEEE Computer Society, 1996, pp. 46-57.
[8]
D. Binkley, S. Danicic, T. Gyimóthy, M. Harman, A. Kiss, and B. Korel, "A formalisation of the relationship between forms of program slicing," Sci. Comput. Program., vol. 62, no. 3, pp. 228-252, Oct. 2006.
[9]
D. Binkley, N. Gold, and M. Harman, "An empirical study of static program slice size," ACM Trans. Softw. Eng. Methodol., vol. 16, no. 2, Apr. 2007.
[10]
M. D. Bond and K. S. McKinley, "Probabilistic calling context," in Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications, ser. OOPSLA '07. New York, NY, USA: ACM, 2007, pp. 97-112.
[11]
J. Bowring, A. Orso, and M. J. Harrold, "Monitoring deployed software using software tomography," in Proceedings of the 2002 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, ser. PASTE '02. New York, NY, USA: ACM, 2002, pp. 2-9.
[12]
J. Clause and A. Orso, "A technique for enabling and supporting debugging of field failures," in Proceedings of the 29th international conference on Software Engineering, ser. ICSE '07. Washington, DC, USA: IEEE Computer Society, 2007, pp. 261-270.
[13]
O. Crameri, R. Bianchini, and W. Zwaenepoel, "Striking a new balance between program instrumentation and debugging time," in Proceedings of the sixth conference on Computer systems, ser. EuroSys '11. New York, NY, USA: ACM, 2011, pp. 199-214.
[14]
B. Gauf and E. Dustin, "The case for automated software testing," Journal of Software Technology, vol. 10, no. 3, pp. 29-34, Oct. 2007.
[15]
R. Gupta, M. L. Soffa, and J. Howard, "Hybrid slicing: integrating dynamic information with static analysis," ACM Trans. Softw. Eng. Methodol., vol. 6, no. 4, pp. 370-397, Oct. 1997.
[16]
B. Hailpern and P. Santhanam, "Software debugging, testing, and verification," IBM Syst. J., vol. 41, no. 1, pp. 4-12, Jan. 2002.
[17]
S. Horwitz, T. Reps, and D. Binkley, "Interprocedural slicing using dependence graphs," in Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation, ser. PLDI '88. New York, NY, USA: ACM, 1988, pp. 35-46.
[18]
S. Horwitz, B. Liblit, and M. Polishchuk, "Better debugging via output tracing and callstack-sensitive slicing," IEEE Trans. Softw. Eng., vol. 36, no. 1, pp. 7-19, Jan. 2010.
[19]
C. Jaramillo, R. Gupta, and M. L. Soffa, "FULLDOC: A full reporting debugger for optimized code," in Proceedings of the 7th International Symposium on Static Analysis, ser. SAS '00. London, UK, UK: Springer-Verlag, 2000, pp. 240-259.
[20]
W. Jin and A. Orso, "Bugredux: reproducing field failures for in-house debugging," in Proceedings of the 2012 International Conference on Software Engineering, ser. ICSE 2012. Piscataway, NJ, USA: IEEE Press, 2012, pp. 474-484.
[21]
M. Kamkar, P. Fritzson, and N. Shahmehri, "Three approaches to interprocedural dynamic slicing," Microprocessing and Microprogramming, vol. 38, no. 1-5, pp. 625-636, 1993.
[22]
B. Korel and J. Laski, "Dynamic program slicing," Inf. Process. Lett., vol. 29, no. 3, pp. 155-163, Oct. 1988.
[23]
B. Korel and J. Laski, "Dynamic slicing of computer programs," J. Syst. Softw., vol. 13, no. 3, pp. 187-195, Dec. 1990.
[24]
J. Krinke, "Context-sensitivity matters, but context does not," in Proceedings of the Source Code Analysis and Manipulation, Fourth IEEE International Workshop, ser. SCAM '04. Washington, DC, USA: IEEE Computer Society, 2004, pp. 29-35.
[25]
C. Lattner and V. Adve, "LLVM: A compilation framework for lifelong program analysis & transformation," in Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO'04), Palo Alto, California, Mar. 2004.
[26]
Y. Lei, X. Mao, Z. Dai, and C. Wang, "Effective statistical fault localization using program slices," in Proceedings of the 2012 IEEE 36th Annual Computer Software and Applications Conference, ser. COMPSAC '12. Washington, DC, USA: IEEE Computer Society, 2012, pp. 1-10.
[27]
D. Melski and T. W. Reps, "Interprocedural path profiling," in Proceedings of the 8th International Conference on Compiler Construction, Held as Part of the European Joint Conferences on the Theory and Practice of Software, ETAPS'99, ser. CC '99. London, UK, UK: Springer-Verlag, 1999, pp. 47-62.
[28]
A. Mulhern and B. Liblit, "Effective slicing: A generalization of full and relevant slicing," University of Wisconsin-Madison, Tech. Rep. 1639, Jun. 2008.
[29]
A. Nishimatsu, M. Jihira, S. Kusumoto, and K. Inoue, "Call-mark slicing: an efficient and economical way of reducing slice," in Proceedings of the 21st international conference on Software engineering, ser. ICSE '99. New York, NY, USA: ACM, 1999, pp. 422-431.
[30]
A. Orso, D. Liang, M. J. Harrold, and R. Lipton, "Gamma system: continuous evolution of software after deployment," in Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis, ser. ISSTA '02. New York, NY, USA: ACM, 2002, pp. 65-69.
[31]
K. J. Ottenstein and L. M. Ottenstein, "The program dependence graph in a software development environment," in Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments, ser. SDE 1. New York, NY, USA: ACM, 1984, pp. 177-184.
[32]
J. Rößler, A. Zeller, G. Fraser, C. Zamfir, and G. Candea, "Reconstructing core dumps," in ICST '13: Proceedings of the Sixth IEEE International Conference on Software Testing, Verification and Validation, Mar. 2013.
[33]
G. Rothermel, S. Elbaum, A. Kinneer, and H. Do. (2006, Sep.) Software-artifact infrastructure repository. [Online]. Available: http://sir.unl.edu/portal/
[34]
W. N. Sumner, Y. Zheng, D. Weeratunge, and X. Zhang, "Precise calling context encoding," in Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, ser. ICSE '10. New York, NY, USA: ACM, 2010, pp. 525-534.
[35]
T. Takada, F. Ohata, and K. Inoue, "Dependence-cache slicing: A program slicing method using lightweight dynamic information," in Proceedings of the 10th International Workshop on Program Comprehension, ser. IWPC '02. Washington, DC, USA: IEEE Computer Society, 2002, pp. 169.
[36]
G. Tassey, "The economic impacts of inadequate infrastructure for software testing," National Institute of Standards and Technology, RTI Project, vol. 7007, no. 011, 2002.
[37]
C. M. Tice, "Non-transparent debugging of optimized code," Ph.D. dissertation, EECS Department, University of California, Berkeley, Nov 1999. [Online]. Available: http://www.eecs.berkeley.edu/Pubs/TechRpts/1999/6232.html
[38]
K. Vaswani, A. V. Nori, and T. M. Chilimbi, "Preferential path profiling: compactly numbering interesting paths," in Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, ser. POPL '07. New York, NY, USA: ACM, 2007, pp. 351-362.
[39]
G. A. Venkatesh, "The semantic approach to program slicing," in Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation, ser. PLDI '91. New York, NY, USA: ACM, 1991, pp. 107-119.
[40]
D. Weeratunge, X. Zhang, and S. Jagannathan, "Analyzing multicore dumps to facilitate concurrency bug reproduction," in Proceedings of the fifteenth edition of ASPLOS on Architectural support for programming languages and operating systems, ser. ASPLOS XV. New York, NY, USA: ACM, 2010, pp. 155-166.
[41]
M. Weiser, "Program slicing," IEEE Trans. Softw. Eng., vol. 10, no. 4, pp. 352-357, Jul. 1984.
[42]
D. Yuan, H. Mai, W. Xiong, L. Tan, Y. Zhou, and S. Pasupathy, "Sherlog: error diagnosis by connecting clues from run-time logs," in Proceedings of the fifteenth edition of ASPLOS on Architectural support for programming languages and operating systems, ser. ASPLOS XV. New York, NY, USA: ACM, 2010, pp. 143-154.
[43]
D. Yuan, J. Zheng, S. Park, Y. Zhou, and S. Savage, "Improving software diagnosability via log enhancement," in Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems, ser. ASPLOS XVI. New York, NY, USA: ACM, 2011, pp. 3-14.
[44]
C. Zamfir and G. Candea, "Execution synthesis: a technique for automated software debugging," in Proceedings of the 5th European conference on Computer systems, ser. EuroSys '10. New York, NY, USA: ACM, 2010, pp. 321-334.
[45]
X. Zhang and R. Gupta, "Cost effective dynamic program slicing," in Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation, ser. PLDI '04. New York, NY, USA: ACM, 2004, pp. 94-106.

Cited By

View all

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ASE '13: Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering
November 2013
765 pages
ISBN:9781479902156
  • General Chair:
  • Ewen Denney,
  • Program Chairs:
  • Tevfik Bultan,
  • Andreas Zeller

Sponsors

Publisher

IEEE Press

Publication History

Published: 11 November 2013

Check for updates

Qualifiers

  • Article

Conference

ASE '13
Sponsor:
ASE '13: Automated Software Engineering
November 11 - 15, 2013
CA, Silicon Valley, USA

Acceptance Rates

Overall Acceptance Rate 82 of 337 submissions, 24%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 11 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2020)From control model to programProceedings of the 29th USENIX Conference on Security Symposium10.5555/3489212.3489264(913-930)Online publication date: 12-Aug-2020
  • (2019)DEEPVSAProceedings of the 28th USENIX Conference on Security Symposium10.5555/3361338.3361462(1787-1804)Online publication date: 14-Aug-2019
  • (2017)Control-flow recovery from partial failure reportsACM SIGPLAN Notices10.1145/3140587.306236852:6(390-405)Online publication date: 14-Jun-2017
  • (2017)Reproducing concurrency failures from crash stacksProceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering10.1145/3106237.3106292(705-716)Online publication date: 21-Aug-2017
  • (2017)Control-flow recovery from partial failure reportsProceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3062341.3062368(390-405)Online publication date: 14-Jun-2017
  • (2016)Optimizing customized program coverageProceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering10.1145/2970276.2970351(27-38)Online publication date: 25-Aug-2016
  • (2016)Hierarchical Program PathsACM Transactions on Software Engineering and Methodology10.1145/296309425:3(1-44)Online publication date: 22-Aug-2016
  • (2016)Casper: an efficient approach to call trace collectionACM SIGPLAN Notices10.1145/2914770.283761951:1(678-690)Online publication date: 11-Jan-2016
  • (2016)Casper: an efficient approach to call trace collectionProceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages10.1145/2837614.2837619(678-690)Online publication date: 11-Jan-2016
  • (2015)Learning to logProceedings of the 37th International Conference on Software Engineering - Volume 110.5555/2818754.2818807(415-425)Online publication date: 16-May-2015
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media