ABSTRACT
In this article, we present a system intended to help students understand and debug concurrent Java programs. The system instruments Java classes to produce execution traces. These traces can then be used to construct a dynamic dependence graph showing the interactions between the different operations performed in the program. These interactions are used as the basis for an interactive visualisation that can be used to explore the execution of a program and trace incorrect program behaviour back from a symptom to the execution of incorrect code.
- H. Agrawal, R. A. DeMillo, and E. H. Spafford. Dynamic slicing in the presence of unconstrained pointers. In TAV4: Proceedings of the symposium on Testing, analysis, and verification, pages 60--73, New York, NY, USA, 1991. ACM. ISBN 0-89791-449-X. doi: http://doi.acm.org/10.1145/120807.120813. Google ScholarDigital Library
- G. Brat, D. Drusinsky, D. Giannakopoulou, A. Goldberg, K. Havelund, M. Lowry, C. Pasareanu, A. Venet, W. Visser, and R. Washington. Experimental evaluation of verification and validation tools on Martian Rover software. Formal Methods in System Design, 25(2--3):167--198, 2004. doi: http://dx.doi.org/10.1023/B:FORM.0000040027.28662.a4. Google ScholarDigital Library
- J. Callaway. Visualization of threads in a running Java program. Master's thesis, University of California, June 2002.Google Scholar
- J.-D. Choi, B. Alpern, T. Ngo, M. Sridharan, and J. Vlissides. A perturbation-free replay platform for cross-optimized multithreaded applications. In Proceedings of the 15th International Parallel and Distributed Processing Symposium, San Fransisco, USA, Apr. 2001. IEEE Computer Society. Google ScholarDigital Library
- M. Dahm. Byte code engineering with the BCEL API. Technical Report B-17-98, Institut für Informatik, Freie Universität Berlin, Apr. 2001.Google Scholar
- G. Di Battista, P. Eades, R. Tamassia, and I. Tollis. Graph Drawing: Algorithms for the Visualization of Graphs. Prentice Hall, Upper Saddle River, NJ, 1999. Google ScholarDigital Library
- D. Drusinsky. The Temporal Rover and the ATG Rover. In Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification, pages 323--330. Springer-Verlag, 2000. Google ScholarDigital Library
- M. Eisenstadt. My hairiest bug war stories. Communications of the ACM, 40(4):30--37, 1997. ISSN 0001-0782. doi: http://doi.acm.org/10.1145/248448.248456. Google ScholarDigital Library
- S. Fitzgerald, G. Lewandowski, R. McCauley, L. Murphy, B. Simon, L. Thomas, and C. Zander. Debugging: Finding, fixing and flailing, a multi-institutional study of novice debuggers. Computer Science Education, 18(2):93--116, June 2008.Google ScholarCross Ref
- A. Georges, M. Christiaens, M. Ronsse, and K. De Bosschere. JaRec: a portable record/replay environment for multi-threaded Java applications. Software --- Practice and Experience, 34(6):523--547, May 2004. Google ScholarDigital Library
- J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java Language Specification. Sun Microsystems, third edition, 2005. Google ScholarDigital Library
- K. Havelund and G. Roşu. An overview of the runtime verification tool Java PathExplorer. Formal Methods in System Design, 24(2):189--215, 2004. doi: http://dx.doi.org/10.1023/B:FORM.0000017721.39909.4b. Google ScholarDigital Library
- G. Holzmann. The model checker Spin. IEEE Trans. on Software Engineering, 23(5):279--295, May 1997. Google ScholarDigital Library
- A. J. Ko and B. A. Myers. Designing the Whyline: a debugging interface for asking questions about program behavior. In CHI '04: Proceedings of the 2004 conference on Human factors in computing systems, pages 151--158. ACM Press, 2004. ISBN 1-58113-702-8. doi: http://doi.acm.org/10.1145/985692.985712. Google ScholarDigital Library
- B. Lewis. Debugging backwards in time. In M. Ronsse, editor, Proceedings of the Fifth International Workshop on Automated Debugging, Ghent, Belgium, Sept. 2003.Google Scholar
- K.-P. Löhr and A. Vratislavsky. JAN - Java animation for program understanding. In 2003 IEEE Symposium on Human Centric Computing Languages and Environments (HCC 2003), pages 67--75, Oct. 2003. Google ScholarDigital Library
- J. Lönnberg. Defects in concurrent programming assignments. In A. Pears and C. Schulte, editors, Proceedings of the Ninth Koli Calling International Conference on Computing Education Research (Koli Calling 2009), pages 11--20, Koli, Finland, 2009. Uppsala University.Google Scholar
- J. Lönnberg and A. Berglund. Students' understandings of concurrent programming. In R. Lister and Simon, editors, Proceedings of the Seventh Baltic Sea Conference on Computing Education Research (Koli Calling 2007), volume 88 of Conferences in Research and Practice in Information Technology, pages 77--86, Koli, Finland, 2008. Australian Computer Society. Google ScholarDigital Library
- J. Lönnberg, A. Korhonen, and L. Malmi. MVT --- a system for visual testing of software. In Proceedings of the Working Conference on Advanced Visual Interfaces (AVI'04), pages 385--388, May 2004. Google ScholarDigital Library
- J. Lönnberg, A. Berglund, and L. Malmi. How students develop concurrent programs. In M. Hamilton and T. Clear, editors, Proceedings of the Eleventh Australasian Computing Education Conference (ACE2009), volume 95 of Conferences in Research and Practice in Information Technology, pages 129--138, Wellington, New Zealand, 2009. Australian Computer Society. Google ScholarDigital Library
- J. Lönnberg, L. Malmi, and A. Berglund. Helping students debug concurrent programs. In A. Pears and L. Malmi, editors, Proceedings of the Eighth Koli Calling International Conference on Computing Education Research (Koli Calling 2008), pages 76--79, Koli, Finland, 2009. Uppsala University. Google ScholarDigital Library
- F. Mattern. Virtual time and global states of distributed systems. In Proceedings of the International Workshop on Parallel and Distributed Algorithms, pages 215--226, Chateau de Bonas, France, Oct. 1988. Elsevier.Google Scholar
- K. Mehner. JaVis: A UML-based visualization and debugging environment for concurrent Java programs. In S. Diehl, editor, Software Visualization, pages 163--175, Dagstuhl Castle, Germany, 2002. Springer-Verlag. Google ScholarDigital Library
- D. Mohapatra, R. Mall, and R. Kumar. An efficient technique for dynamic slicing of concurrent Java programs. In S. Manandhar, J. Austin, U. Desai, Y. Oyanagi, and A. Talukder, editors, Applied Computing --- Proceedings of the Second Asian Applied Computing Conference (AACC 2004), volume 3285 of Lecture Notes in Computer Science (LNCS), pages 255--262. Springer, 2004.Google Scholar
- R. Oechsle and T. Schmitt. JAVAVIS: Automatic program visualization with object and sequence diagrams using the Java Debug Interface (JDI). In S. Diehl, editor, Software Visualization, pages 176--190, Dagstuhl Castle, Germany, 2002. Springer-Verlag. Google ScholarDigital Library
- Robby, M. B. Dwyer, and J. Hatcliff. Bogor: A flexible framework for creating software model checkers. In Proceedings of Testing: Academic & Industrial Conference --- Practice And Research Techniques, June 2006. Google ScholarDigital Library
- N. Rutar, C. B. Almazan, and J. S. Foster. A comparison of bug finding tools for Java. In ISSRE '04: Proceedings of the 15th International Symposium on Software Reliability Engineering, pages 245--256, Washington, DC, USA, 2004. IEEE Computer Society. doi: http://dx.doi.org/10.1109/ISSRE.2004.1. Google ScholarDigital Library
- V. Schuppan, M. Baur, and A. Biere. JVM independent replay in Java. In Proceedings of the Fourth Workshop on Runtime Verification (RV 2004), volume 113 of Electronic Notes in Theoretical Computer Science, pages 85--104. Elsevier, Jan. 2005. Google ScholarDigital Library
- S. D. Stoller. Testing concurrent Java programs using randomized scheduling. In Proceedings of Second Workshop on Runtime Verification (RV), volume 70(4) of Electronic Notes in Theoretical Computer Science. Elsevier, July 2002.Google Scholar
- W. Visser, K. Havelund, G. Brat, S. Park, and F. Lerda. Model checking programs. Automated Software Engineering Journal, 10(2):203--232, Apr. 2003. Google ScholarDigital Library
- A. von Mayrhauser and A. M. Vans. Program understanding behavior during debugging of large scale software. In ESP '97: Papers presented at the seventh workshop on Empirical studies of programmers, pages 157--179, New York, NY, USA, 1997. ACM Press. doi: http://doi.acm.org/10.1145/266399.266414. Google ScholarDigital Library
- M. Weiser. Program slicing. In ICSE '81: Proceedings of the 5th international conference on Software engineering, pages 439--449, Piscataway, NJ, USA, 1981. IEEE Press. Google ScholarDigital Library
- M. Weiser. Programmers use slices when debugging. Communications of the ACM, 25(7):446--452, July 1982. Google ScholarDigital Library
- A. Zeller. Animating data structures in DDD. In The proceedings of the First Program Visualization Workshop --- PVW 2000, pages 69--78, Porvoo, Finland, 2001. University of Joensuu.Google Scholar
- J. Zhao. Dynamic slicing of object-oriented programs. In Technical Report SE-98-119, pages 17--23. Information Processing Society of Japan, May 1998.Google Scholar
- J. Zhao. Multithreaded dependence graphs for concurrent Java programs. In In Proceedings of 1999 International Symposium on Software Engineering for Parallel and Distributed Systems, pages 13--23. IEEE Computer Society, 1999. Google ScholarDigital Library
Index Terms
- Java replay for dependence-based debugging
Recommendations
JVM Independent Replay in Java
Deterministic replay can help to understand the cause of a failing execution of a multi-threaded program. Stepwise browsing of a counterexample serves the same purpose in the context of static and dynamic checking. In this paper we present a tool for ...
Replay debugging: leveraging record and replay for program debugging
ISCA '14Hardware-assisted Record and Deterministic Replay (RnR) of programs has been proposed as a primitive for debugging hard-to-repeat software bugs. However, simply providing support for repeatedly stumbling on the same bug does not help diagnose it. For ...
Replay Debugging of Real-Time Vxworks Applications
COMPSAC '15: Proceedings of the 2015 IEEE 39th Annual Computer Software and Applications Conference - Volume 03Debugging multi-task real-time VxWorks applications is tedious and time-consuming for developers. The non-determinism within the application execution makes the developers hard to reproduce a failure.1As a result, the developers cannot perform cyclic ...
Comments