skip to main content
10.1145/3481549.3481566acmotherconferencesArticle/Chapter ViewAbstractPublication PagesvinciConference Proceedingsconference-collections
research-article

ThreadRadar: A Thread-Aware Visualization for Debugging Concurrent Java Programs

Published:27 November 2021Publication History

ABSTRACT

Due to non-deterministic behavior and thread interleaving of concurrent programs, the debugging of concurrency and performance issues is a rather difficult and often tedious task. In this paper, we present an approach that combines statistical profiling, clustering and visualization to facilitate this task. We implemented our approach in a tool which is integrated as a plugin into a widely used IDE. First, we introduce our approach with details on the profiling and clustering strategy that produce runtime metrics and clusters of threads for source-code artifacts at different levels of abstraction (class and method) and the entire program. Next, we explain the design of our sparkline visualization which represents the clusters in situ, i.e. embedded in the program text next to the related source-code artifact in the source-code editor. More detailed information is available in separate views that also allow the user to interactively configure thread filters. In a demonstration study we illustrate the usefulness of the tool for understanding and fixing performance and concurrency issues. Finally, we report on first formative results from a small-scale user study.

References

  1. JetBrains s.r.o.2020. Program Structure Interface (PSI) / IntelliJ Platform SDK DevGuide. https://www.jetbrains.org/intellij/sdk/docs/basics/architectural_overview/psi.htmlGoogle ScholarGoogle Scholar
  2. Mohammad Mejbah Ul Alam, Tongping Liu, Guangming Zeng, and Abdullah Muzahid. 2017. SyncPerf: Categorizing, Detecting, and Diagnosing Synchronization Performance Bugs. In Proceedings of the Twelfth European Conference on Computer Systems, EuroSys 2017, Belgrade, Serbia, April 23-26, 2017. 298–313. https://doi.org/10.1145/3064176.3064186Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Juan Pablo Sandoval Alcocer, Harold Camacho Jaimes, Diego Costa, Alexandre Bergel, and Fabian Beck. 2019. Enhancing Commit Graphs with Visual Runtime Clues. In 2019 Working Conference on Software Visualization, VISSOFT 2019, Cleveland, OH, USA, September 30 - October 1, 2019. IEEE, 28–32. https://doi.org/10.1109/VISSOFT.2019.00012Google ScholarGoogle Scholar
  4. Cyrille Artho, Klaus Havelund, and Shinichi Honiden. 2007. Visualization of Concurrent Program Executions. In 31st Annual International Computer Software and Applications Conference, COMPSAC 2007, Beijing, China, July 24-27, 2007. Volume 2. 541–546. https://doi.org/10.1109/COMPSAC.2007.236Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Fabian Beck, Oliver Moseler, Stephan Diehl, and Günter Daniel Rey. 2013. In situ understanding of performance bottlenecks through visually augmented code. In IEEE 21st International Conference on Program Comprehension, ICPC 2013, San Francisco, CA, USA, 20-21 May, 2013. 63–72. https://doi.org/10.1109/ICPC.2013.6613834Google ScholarGoogle ScholarCross RefCross Ref
  6. Jürgen Cito, Philipp Leitner, Christian Bosshard, Markus Knecht, Genc Mazlami, and Harald C. Gall. 2018. PerformanceHat: augmenting source code with runtime performance traces in the IDE. In Proceedings of the 40th International Conference on Software Engineering: Companion Proceeedings, ICSE 2018, Gothenburg, Sweden, May 27 - June 03, 2018. 41–44. https://doi.org/10.1145/3183440.3183481Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Bas Cornelissen, Andy Zaidman, Arie van Deursen, Leon Moonen, and Rainer Koschke. 2009. A Systematic Survey of Program Comprehension through Dynamic Analysis. IEEE Trans. Software Eng. 35, 5 (2009), 684–702. https://doi.org/10.1109/TSE.2009.28Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Hyunsook Do, Sebastian G. Elbaum, and Gregg Rothermel. 2005. Supporting Controlled Experimentation with Testing Techniques: An Infrastructure and its Potential Impact. Empirical Software Engineering 10, 4 (2005), 405–435. https://doi.org/10.1007/s10664-005-3861-2Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Sebastian Hahn, Matthias Trapp, Nikolai Wuttke, and Jürgen Döllner. 2015. Thread City: Combined Visualization of Structure and Activity for the Exploration of Multi-threaded Software Systems. In 19th International Conference on Information Visualisation, IV 2015, Barcelona, Spain, July 22-24, 2015. 101–106. https://doi.org/10.1109/iV.2015.28Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. JetBrains s.r.o.2021. All Developer Tools and Products by JetBrains. https://www.jetbrains.com/products.html#type=ideGoogle ScholarGoogle Scholar
  11. Benjamin Karran, Jonas Trümper, and Jürgen Döllner. 2013. SYNCTRACE: Visual thread-interplay analysis. In 2013 First IEEE Working Conference on Software Visualization (VISSOFT), Eindhoven, The Netherlands, September 27-28, 2013. 1–10. https://doi.org/10.1109/VISSOFT.2013.6650534Google ScholarGoogle ScholarCross RefCross Ref
  12. Shan Lu, Soyeon Park, Eunsoo Seo, and Yuanyuan Zhou. 2008. Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. In Proceedings of the 13th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2008, Seattle, WA, USA, March 1-5, 2008. 329–339. https://doi.org/10.1145/1346281.1346323Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Katharina Mehner. 2005. Trace based debugging and visualisation of concurrent Java programs with UML. Ph.D. Dissertation. University of Paderborn, Germany. http://ubdata.uni-paderborn.de/ediss/17/2005/mehner/disserta.pdfGoogle ScholarGoogle Scholar
  14. Andy Nisbet, Nuno Miguel Nobre, Graham D. Riley, and Mikel Luján. 2019. Profiling and Tracing Support for Java Applications. In Proceedings of the 2019 ACM/SPEC International Conference on Performance Engineering, ICPE 2019, Mumbai, India, April 7-11, 2019. ACM, 119–126. https://doi.org/10.1145/3297663.3309677Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Oliver Moseler, Lucas Kreber, and Stephan Diehl. 2021. Supplementary Material to ThreadRadar: A Thread-Aware Visualization for Debugging Concurrent Java Programs. https://doi.org/10.5281/zenodo.4753849Google ScholarGoogle Scholar
  16. Oracle. 2020. ArrayBlockingQueue (Java SE 11 & JDK 11). https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/ArrayBlockingQueue.htmlGoogle ScholarGoogle Scholar
  17. Oracle. 2020. JVM(TM) Tool Interface 11.0.0. https://docs.oracle.com/en/java/javase/11/docs/specs/jvmti.htmlGoogle ScholarGoogle Scholar
  18. Wim De Pauw, Sophia Krasikov, and John F. Morar. 2006. Execution patterns for visualizing web services. In Proceedings of the ACM 2006 Symposium on Software Visualization, Brighton, UK, September 4-5, 2006. ACM, 37–45. https://doi.org/10.1145/1148493.1148499Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Gustavo Pinto, Weslley Torres, Benito Fernandes, Fernando Castor Filho, and Roberto Souto Maior de Barros. 2015. A large-scale study on the usage of Java’s concurrent programming constructs. Journal of Systems and Software 106 (2015), 59–81. https://doi.org/10.1016/j.jss.2015.04.064Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. David Röthlisberger, Marcel Harry, Walter Binder, Philippe Moret, Danilo Ansaloni, Alex Villazón, and Oscar Nierstrasz. 2012. Exploiting Dynamic Information in IDEs Improves Speed and Correctness of Software Maintenance Tasks. IEEE Trans. Software Eng. 38, 3 (2012), 579–591. https://doi.org/10.1109/TSE.2011.42Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. David Röthlisberger, Marcel Harry, Alex Villazón, Danilo Ansaloni, Walter Binder, Oscar Nierstrasz, and Philippe Moret. 2009. Augmenting static source views in IDEs with dynamic metrics. In 25th IEEE International Conference on Software Maintenance (ICSM 2009), September 20-26, 2009, Edmonton, Alberta, Canada. IEEE Computer Society, 253–262. https://doi.org/10.1109/ICSM.2009.5306302Google ScholarGoogle ScholarCross RefCross Ref
  22. Matús Sulír, Michaela Bacíková, Sergej Chodarev, and Jaroslav Porubän. 2018. Visual augmentation of source code editors: A systematic mapping study. J. Vis. Lang. Comput. 49(2018), 46–59. https://doi.org/10.1016/j.jvlc.2018.10.001Google ScholarGoogle ScholarCross RefCross Ref
  23. Herb Sutter and James R. Larus. 2005. Software and the concurrency revolution. ACM Queue 3, 7 (2005), 54–62. https://doi.org/10.1145/1095408.1095421Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Edward R. Tufte. 2006. Beautiful Evidence. Graphics Press, Cheshire, CT. 46–63 pages.Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Mattias De Wael, Stefan Marr, and Tom Van Cutsem. 2014. Fork/join parallelism in the wild: documenting patterns and anti-patterns in Java programs using the fork/join framework. In 2014 International Conference on Principles and Practices of Programming on the Java Platform Virtual Machines, Languages and Tools, PPPJ ’14, Cracow, Poland, September 23-26, 2014. 39–50. https://doi.org/10.1145/2647508.2647511Google ScholarGoogle Scholar
  26. Kiri Wagstaff, Claire Cardie, Seth Rogers, and Stefan Schrödl. 2001. Constrained K-Means Clustering with Background Knowledge. In Proceedings of the Eighteenth International Conference on Machine Learning(ICML ’01). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 577–584.Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Jan Waller, Christian Wulf, Florian Fittkau, Philipp Dohring, and Wilhelm Hasselbring. 2013. Synchrovis: 3D visualization of monitoring traces in the city metaphor for analyzing concurrency. In 2013 First IEEE Working Conference on Software Visualization (VISSOFT), Eindhoven, The Netherlands, September 27-28, 2013. 1–4. https://doi.org/10.1109/VISSOFT.2013.6650520Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. ThreadRadar: A Thread-Aware Visualization for Debugging Concurrent Java Programs
          Index terms have been assigned to the content through auto-classification.

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Other conferences
            VINCI '21: Proceedings of the 14th International Symposium on Visual Information Communication and Interaction
            September 2021
            139 pages
            ISBN:9781450386470
            DOI:10.1145/3481549

            Copyright © 2021 ACM

            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 the author(s) 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].

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 27 November 2021

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article
            • Research
            • Refereed limited

            Acceptance Rates

            Overall Acceptance Rate71of193submissions,37%

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader

          HTML Format

          View this article in HTML Format .

          View HTML Format