Diagnosing Program Errors with Light-Weighted Specifications
During the last decade many computer-aided debugging tools have been developed to assist users to detect program errors in a software system. A good example are model checking tools that provide counterexamples in case a given program violates the specified properties. However, even with a detailed erroneous run, it remains difficult for users to understand the error well and to isolate its root cause quickly and cheaply. This paper presents object store models for diagnosing program errors with light-weighted specifications. The models we use can keep track on object relations arising during program execution, detect counterexamples that violate user-provided properties, and highlight statements responsible for the violation. We have used the approach to help students to locate and correct the program errors in their course works.
KeywordsModel Check Binary Relation Object Relation Symbolic Execution Class Creation
Unable to display preview. Download preview PDF.
- 1.Ball, T., Naik, M., Rajamani, S.K.: From symptom to cause: localizing errors in counterexample traces. In: Proc. of POPL, pp. 97–105. ACM Press, New York (2003)Google Scholar
- 5.Detlefs, D.L., Leino, K.R.M., Nelson, G., Saxe, J.B.: Extended static checking. Technical Report SRC-RR-159, HP Laboratories (1998)Google Scholar
- 7.Groce, A., Visser, W.: What went wrong: Explaining counter examples. In: 10th International SPIN Workshop on Model Checking of Software, vol. 5 (2003)Google Scholar
- 9.Mayer, W., Stumptner, M., Wieland, D., Wotawa, F.: Can ai help to improve debugging substantially? debugging experiences with value-based models. In: Proc. ECAI, pp. 417–421. IOS Press, Amsterdam (2002)Google Scholar
- 11.Wieland, D.: Model-Based Debugging of Java Programs Using Dependencies. PhD thesis, Vienna University of Technology, Institute of Information Systems (184) (November 2001)Google Scholar
- 12.Zeller, A., Hildebrandt, R.: Simplifying and isolating failure-inducing input. IEEE Transactions on Software Engineering 28(2) (2002)Google Scholar