Solving shape-analysis problems in languages with destructive updating
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Solving shape-analysis problems in languages with destructive updating
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parametric shape analysis via 3-valued logic
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
New shape analysis techniques for automatic parallelization of C codes
ICS '99 Proceedings of the 13th international conference on Supercomputing
Putting static analysis to work for verification: A case study
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
Parametric shape analysis via 3-valued logic
ACM Transactions on Programming Languages and Systems (TOPLAS)
Building a Bridge between Pointer Aliases and Program Dependences
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
TVLA: A System for Implementing Static Analyses
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
Algorithm Explanation: Visualizing Abstract States and Invariants
Revised Lectures on Software Visualization, International Seminar
Visualization in algorithm engineering: tools and techniques
Experimental algorithmics
Algorithm animation using shape analysis: visualising abstract executions
SoftVis '05 Proceedings of the 2005 ACM symposium on Software visualization
Hi-index | 0.00 |
Traditional algorithm animation attempts to provide visualizations of the execution of a program on concrete data. In recent years a different approach has been proposed which attempts to visualize an "abstract execution" on "abstract data." This is based on Cousots' notion of abstract interpretations, in particular in the case of programs manipulating pointer structures this is based on so-called shape analysis. Shape analysis maps all possible heap configurations that can arise during a program's executions (a potentially unbounded set) to a finite number of "shape graphs" and it maps steps of the program to transitions between shape graphs. Every concrete execution of the program then corresponds to a sequence of transitions among shape graphs, the "abstract execution." Visualizing such an abstract execution is desirable since sets of shape graphs in a very strong sense encode invariants of the program and understanding the effect of a program usually benefits more from grasping what stays invariant than from seeing what changes. In this paper we combine the two approaches and argue for simultaneously visualizing a concrete and the corresponding abstract execution of a program. We have built a Visualizer for programs manipulating pointer structures that realizes this combined abstract/concrete visualization. It uses TVLA to automatically perform the shape analysis of a program. It allows to present abstract and concrete views in an extremely customizable way. This paper however does not present our Visualizer, but focuses on the technique to combine concrete and abstract visualizations.