Abstract:
Trace-based debuggers help a debugging process by displaying a history of executed operations with their parameters in a run of a program. However, those debuggers are unable to provide any clues when a program does not perform operations that ought to occur. This paper proposes a novel feature called the omission finder for trace-based debuggers. This feature correlates points-to analysis results with an execution history to show operations that could have been but actually were not performed on a specified instance if the program behaved differently. We implemented the omission finder on top of an existing trace-based debugger, and confirmed reduction of the number of debugging steps with an omission bug in a real-world program. Our user-study also showed reduction of debugging times with programs containing omission bugs.
Reference:
The Omission Finder for Debugging What-Should-Have-Happened Bugs in Object-Oriented Programs (Kouhei Sakurai and Hidehiko Masuhara), In In Proceedings of The 30th ACM/SIGAPP Symposium On Applied Computing (SAC 2015), 2015.
Bibtex Entry:
@inproceedings{sakurai2015sac,
organization = {{ACM}},
days = {13--17},
month = apr,
location = {Salamanca, Spain},
year = 2015,
pdf = {sac2015.pdf},
author = {Kouhei Sakurai and Hidehiko Masuhara},
title = {The Omission Finder for Debugging What-Should-Have-Happened Bugs in Object-Oriented Programs},
doi = {10.1145/2695664.2695735},
booktitle = {In Proceedings of The 30th ACM/SIGAPP Symposium On Applied Computing (SAC 2015)},
pages = {1962--1969},
annote = {OOPS! Track},
date = {2015-04-13 .. 2015-04-17},
keywords = {Java, Back-in-time debugger, Omniscent debugging, Traced-based debugger},
abstract = {Trace-based debuggers help a debugging process by displaying a history of executed operations with their parameters in a run of a program. However, those debuggers are unable to provide any clues when a program does not perform operations that ought to occur. This paper proposes a novel feature called the omission finder for trace-based debuggers. This feature correlates points-to analysis results with an execution history to show operations that could have been but actually were not performed on a specified instance if the program behaved differently. We implemented the omission finder on top of an existing trace-based debugger, and confirmed reduction of the number of debugging steps with an omission bug in a real-world program. Our user-study also showed reduction of debugging times with programs containing omission bugs.}
}