skip to main content
10.1145/2807426.2807439acmotherconferencesArticle/Chapter ViewAbstractPublication PagespppjConference Proceedingsconference-collections
research-article

BLAST: Bytecode-Level Analysis on Sliced Traces

Published: 08 September 2015 Publication History

Abstract

BLAST is a framework for deep analysis of Java program executions. It captures the entire information flow of an execution. A BLAST trace represents the space-time history of a program run: It combines space (heap, static, and stack memory locations) and time (executed bytecode instructions). The BLAST API allows to easily slice and navigate that history along the data and control dependencies of the execution. This paper introduces BLAST and shows one possible application: root cause analysis for debugging unit test failures.

References

[1]
H. Agrawal and J. R. Horgan. Dynamic program slicing. In ACM SIGPLAN Notices, volume 25, pages 246--256. ACM, 1990.
[2]
M. R. Azadmanesh and M. Hauswirth. Space-time views for back-in-time debugging. Technical Report 2015/02, University of Lugano, May 2015.
[3]
S. F. Goldsmith, R. O'Callahan, and A. Aiken. Relational queries over program traces. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA '05, pages 385--402, New York, NY, USA, 2005. ACM.
[4]
Z. Gu, E. T. Barr, D. Schleck, and Z. Su. Reusing debugging knowledge via trace-based bug search. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA '12, pages 927--942, New York, NY, USA, 2012. ACM.
[5]
C. Hofer, M. Denker, and S. Ducasse. Design and implementation of a backward-in-time debugger. In NODe 2006, pages 17--32. GI, 2006.
[6]
R. Just, D. Jalali, and M. D. Ernst. Defects4J: A database of existing faults to enable controlled testing studies for Java programs. In Proceedings of the International Symposium on Software Testing and Analysis (ISSTA), pages 437--440, San Jose, CA, USA, July 2014.
[7]
Y. P. Khoo, J. S. Foster, and M. Hicks. Expositor: Scriptable time-travel debugging with first-class traces. In Proceedings of the 2013 International Conference on Software Engineering, ICSE '13, pages 352--361, Piscataway, NJ, USA, 2013. IEEE Press.
[8]
A. J. Ko and B. A. Myers. Designing the whyline: A debugging interface for asking questions about program behavior. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, CHI '04, pages 151--158, New York, NY, USA, 2004. ACM.
[9]
A. J. Ko and B. A. Myers. Finding causes of program output with the java whyline. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, CHI '09, pages 1569--1578, New York, NY, USA, 2009. ACM.
[10]
B. Korel and J. Laski. Dynamic program slicing. Information Processing Letters, 29(3):155--163, 1988.
[11]
R. Lencevicius, U. Hölzle, and A. K. Singh. Query-based debugging of object-oriented programs. In Proceedings of the 12th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA '97, pages 304--317, New York, NY, USA, 1997. ACM.
[12]
B. Lewis. Debugging backwards in time. arXiv preprint cs/0310016, 2003.
[13]
A. Lienhard, T. Gîrba, and O. Nierstrasz. Practical object-oriented back-in-time debugging. In ECOOP 2008--Object-Oriented Programming, pages 592--615. Springer, 2008.
[14]
M. Martin, B. Livshits, and M. S. Lam. Finding application errors and security flaws using pql: A program query language. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA '05, pages 365--383, New York, NY, USA, 2005. ACM.
[15]
N. Nethercote and A. Mycroft. Redux: A dynamic dataflow tracer. Electronic Notes in Theoretical Computer Science, 89(2):149--170, 2003.
[16]
A. Potanin, J. Noble, and R. Biddle. Snapshot query-based debugging. In Proceedings of the 2004 Australian Software Engineering Conference, ASWEC '04, pages 251--, Washington, DC, USA, 2004. IEEE Computer Society.
[17]
G. Pothier and É. Tanter. Summarized trace indexing and querying for scalable back-in-time debugging. In ECOOP 2011--Object-Oriented Programming, pages 558--582. Springer, 2011.
[18]
G. Pothier, É. Tanter, and J. Piquer. Scalable omniscient debugging. In ACM SIGPLAN Notices, volume 42, pages 535--552. ACM, 2007.
[19]
J. T. Schwartz. An overview of bugs. Debugging Techniques in Large Systems, pages 1--16, 1971.
[20]
M. Sridharan, S. J. Fink, and R. Bodik. Thin slicing. In ACM SIGPLAN Notices, volume 42, pages 112--122. ACM, 2007.
[21]
M. Weiser. Program slicing. In Proceedings of the 5th international conference on Software engineering, ICSE '81, pages 439--449, Piscataway, NJ, USA, 1981. IEEE Press.
[22]
M. Weiser. Programmers use slices when debugging. Commun. ACM, 25(7):446--452, July 1982.
[23]
M. D. Weiser. Program slices: formal, psychological, and practical investigations of an automatic program abstraction method. PhD thesis, Ann Arbor, MI, USA, 1979. AAI8007856.
[24]
M. V. Zelkowitz. Reversible execution. Commun. ACM, 16(9):566--, Sept. 1973.
[25]
A. Zeller. Why Programs Fail: A Guide to Systematic Debugging. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2005.
[26]
X. Zhang, N. Gupta, and R. Gupta. Pruning dynamic slices with confidence. In ACM SIGPLAN Notices, volume 41, pages 169--180. ACM, 2006.
[27]
X. Zhang, N. Gupta, and R. Gupta. A study of effectiveness of dynamic slicing in locating real faults. Empirical Software Engineering, 12(2):143--160, 2007.

Cited By

View all
  • (2017)Concept-Driven Generation of Intuitive Explanations of Program Execution for a Visual Tutor2017 IEEE Working Conference on Software Visualization (VISSOFT)10.1109/VISSOFT.2017.22(64-73)Online publication date: Sep-2017
  • (2017)Language-independent information flow tracking engine for program comprehension toolsProceedings of the 25th International Conference on Program Comprehension10.1109/ICPC.2017.5(346-355)Online publication date: 20-May-2017
  • (2016)InfectoMeter: A tool that helps to place bug fixes2016 IEEE 24th International Conference on Program Comprehension (ICPC)10.1109/ICPC.2016.7503742(1-3)Online publication date: May-2016
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
PPPJ '15: Proceedings of the Principles and Practices of Programming on The Java Platform
September 2015
190 pages
ISBN:9781450337120
DOI:10.1145/2807426
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 08 September 2015

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. bytecode-level analysis
  2. dynamic analysis
  3. information flow
  4. program slicing
  5. program trace
  6. query-based debugging

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Funding Sources

Conference

PPPJ '15

Acceptance Rates

PPPJ '15 Paper Acceptance Rate 15 of 27 submissions, 56%;
Overall Acceptance Rate 29 of 58 submissions, 50%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)2
  • Downloads (Last 6 weeks)1
Reflects downloads up to 20 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2017)Concept-Driven Generation of Intuitive Explanations of Program Execution for a Visual Tutor2017 IEEE Working Conference on Software Visualization (VISSOFT)10.1109/VISSOFT.2017.22(64-73)Online publication date: Sep-2017
  • (2017)Language-independent information flow tracking engine for program comprehension toolsProceedings of the 25th International Conference on Program Comprehension10.1109/ICPC.2017.5(346-355)Online publication date: 20-May-2017
  • (2016)InfectoMeter: A tool that helps to place bug fixes2016 IEEE 24th International Conference on Program Comprehension (ICPC)10.1109/ICPC.2016.7503742(1-3)Online publication date: May-2016
  • (2015)Infection size as a measure of bug severityProceedings of the 13th International Workshop on Dynamic Analysis10.1145/2823363.2823370(31-32)Online publication date: 26-Oct-2015
  • (2015)SQL for deep dynamic analysis?Proceedings of the 13th International Workshop on Dynamic Analysis10.1145/2823363.2823365(2-7)Online publication date: 26-Oct-2015

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media