HDPV: interactive, faithful, in-vivo runtime state visualization for C/C++ and Java

Data structure visualization can increase program understanding in an educational context and help with visual debugging. Existing data structure visualization tools are limited in interactivity, providing mostly static views; flexibility, by restricting the layout strategies users can apply; scope, by focusing on only a single language; and fidelity, by abstracting away the actual runtime layout and size of a program's data. This paper presents the design and implementation of HDPV, a system for interactive, faithful, in-vivo runtime state visualization for native C/C++ programs and Java programs. We discuss how HDPV can be used for a number of use cases ranging from understanding simple, recursive programs, to understanding the visual effect of programming errors such as buffer overflows.

[1]  Marc H. Brown,et al.  Zeus: a system for algorithm animation and multi-view editing , 1991, Proceedings 1991 IEEE Workshop on Visual Languages.

[2]  John T. Stasko Tango: A Framework and System for Algorithm Animation , 1990, Computer.

[3]  Blaine A. Price,et al.  A Principled Taxonomy of Software Visualization , 1993, J. Vis. Lang. Comput..

[4]  T. Dean Hendrix,et al.  Providing Data Structure Animations in a Lightweight IDE , 2007, Electron. Notes Theor. Comput. Sci..

[5]  Christopher D. Hundhausen,et al.  Personalizing and discussing algorithms within CS1 studio experiences: an observational study , 2005, ICER '05.

[6]  Steven P. Reiss,et al.  Jove: java as it happens , 2005, SoftVis '05.

[7]  T. Dean Hendrix,et al.  An extensible framework for providing dynamic data structure visualizations in a lightweight IDE , 2004 .

[8]  Christopher D. Hundhausen,et al.  What you see is what you code: a radically dynamic algorithm visualization development model for novice learners , 2005, 2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'05).

[9]  Andreas Zeller,et al.  DDD—a free graphical front-end for UNIX debuggers , 1996, SIGP.

[10]  Ricardo Baeza-Yates,et al.  VISUAL DEBUGGING AND AUTOMATIC ANIMATION OF C PROGRAMS , 1996 .

[11]  Nick Mitchell,et al.  Visualizing the Execution of Java Programs , 2001, Software Visualization.

[12]  Robert Sedgewick,et al.  A system for algorithm animation , 1984, SIGGRAPH.

[13]  Sougata Mukherjea,et al.  Applying algorithm animation techniques for program tracing, debugging, and understanding , 1993, Proceedings of 1993 15th International Conference on Software Engineering.

[14]  Dennis R. Goldenson,et al.  The impact of structured editing on introductory computer science education: the results so far , 1989, SGCS.

[15]  Stephen McCamant,et al.  The Daikon system for dynamic detection of likely invariants , 2007, Sci. Comput. Program..

[16]  Ali S. Erkan,et al.  Data structure visualization with latex and prefuse , 2007 .

[17]  Brad A. Myers INCENSE: A system for displaying data structures , 1983, SIGGRAPH.

[18]  Ravinder Chandhok,et al.  The design and implementation of the Pascal GENIE , 1989, CSC '89.

[19]  Robert R. Henry,et al.  The University of Washington illustrating compiler , 1990, PLDI '90.

[20]  Prasad Gopal,et al.  Top: An Infrastructure for detecting Application-Specific Program Errors by Binary Runtime Instrumentation , 2006 .

[21]  Steven P. Reiss Cacti: a front end for program visualization , 1997, Proceedings of VIZ '97: Visualization Conference, Information Visualization Symposium and Parallel Rendering Symposium.

[22]  Sougata Mukherjea,et al.  Toward visual debugging: integrating algorithm animation capabilities within a source-level debugger , 1994, TCHI.

[23]  John T. Stasko,et al.  Using student-built algorithm animations as learning aids , 1997, SIGCSE '97.

[24]  Harish Patil,et al.  Pin: building customized program analysis tools with dynamic instrumentation , 2005, PLDI '05.

[25]  Steven P. Reiss Visualizing Java in action , 2003, SoftVis '03.

[26]  Thierry Coupaye,et al.  ASM: a code manipulation tool to implement adaptable systems , 2002 .

[27]  Jeffrey Heer,et al.  prefuse: a toolkit for interactive information visualization , 2005, CHI.

[28]  Brad A. Myers,et al.  Automatic data visualization for novice Pascal programmers , 1988, [Proceedings] 1988 IEEE Workshop on Visual Languages.

[29]  Michael Jünger,et al.  Improving Walker's Algorithm to Run in Linear Time , 2002, GD.

[30]  Erkki Sutinen,et al.  Visualizing programs with Jeliot 3 , 2004, AVI.

[31]  T. Dean Hendrix,et al.  Experimental evaluation of animated-verifying object viewers for Java , 2006, SoftVis '06.

[32]  J. Stasko,et al.  A Meta-Study of Algorithm Visualization Effectiveness , 2002, J. Vis. Lang. Comput..

[33]  John T. Stasko,et al.  Data Structure Visualization , 2018, Handbook of Data Structures and Applications.

[34]  Thomas Schmitt,et al.  JAVAVIS: Automatic Program Visualization with Object and Sequence Diagrams Using the Java Debug Interface (JDI) , 2001, Software Visualization.