ACM Home Page
Please provide us with feedback. Feedback
JThreadSpy: teaching multithreading programming by analyzing execution traces
Full text PdfPdf (327 KB)
Source
International Symposium on Software Testing and Analysis archive
Proceedings of the 2007 ACM workshop on Parallel and distributed systems: testing and debugging table of contents
London, United Kingdom
SESSION: Debugging MPD programs table of contents
Pages: 3 - 13  
Year of Publication: 2007
ISBN:978-1-59593-748-3
Authors
Giovanni Malnati  Politecnico di Torino, Corso Duca degli Abruzzi, Torino, Italy
Caterina Maria Cuva  Politecnico di Torino, Corso Duca degli Abruzzi, Torino, Italy
Claudia Barberis  Politecnico di Torino, Corso Duca degli Abruzzi, Torino, Italy
Sponsors
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 2,   Downloads (12 Months): 45,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1273647.1273650
What is a DOI?

ABSTRACT

Multithreading introduces a degree of complexity that is often difficult to grasp by beginners both because of many false assumptions made about the scheduling process and because it is not possible to adopt a trial and error strategy aimed at figuring out what exactly happens during the execution, as a consequence of the intrinsic non determinism of threaded execution.

This article describes JThreadSpy, a tool for dynamic instrumentation of Java programs, aimed at registering execution traces of each thread and displaying them with a selectable level of detail.

JThreadSpy relies on the ASM framework to dynamically instrument methods during class loading, in order to insert suitable method calls that produce an execution trace that is later used to display an annotated UML sequence diagram, highlighting different threads and synchronization constructs.

JThreadSpy proved to be a valuable tool for students engaged in an object-oriented programming course at Politecnico di Torino. By graphically analysing execution flows, students could understand, in an easier way, the non-determinism introduced by the scheduler, the effects of synchronization constructs, the impact of multicore processor architectures, as well as identify critical sections, deadlocks and other anomalies of concurrent programs.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
ASM Home page: http://asm.objectweb.org.
 
2
BCEL Byte Code Engineering Library: http://jakarta.apache.org/bcel/manual.html.
3
 
4
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. "Design Patterns", Addison Wesley, 1995.
 
5
Java Profiler To Monitor Java Performance with JProbe Profiler from Quest Software: http://www.quest.com/jprobe/performance-home.aspx.
 
6
 
7
Lindholm, T. and Yellin, F. "The JavaTM Virtual Machine Specification, Second Edition", Sun Microsystems, Inc., 1999, http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html.
 
8
 
9
 
10
The Java Tutorials: Deadlocks: http://java.sun.com/docs/books/tutorial/essential/concurrency/deadlock.html.

Collaborative Colleagues:
Giovanni Malnati: colleagues
Caterina Maria Cuva: colleagues
Claudia Barberis: colleagues