Introspector: A general-purpose tool for visualizing and comparing runtime object structures on the Java platform

Understanding the runtime behavior of complex software systems requires dynamic analysis beyond traditional static inspection techniques. Modern applications rely on intricate hierarchies of interconnected objects, making runtime structure analysis crucial for debugging and software comprehension. T...

Full description

Saved in:
Bibliographic Details
Main Authors: Francisco Ortin, Oscar Rodriguez-Prieto, Miguel Garcia
Format: Article
Language:English
Published: Elsevier 2025-09-01
Series:SoftwareX
Subjects:
Online Access:http://www.sciencedirect.com/science/article/pii/S2352711025002171
Tags: Add Tag
No Tags, Be the first to tag this record!
Description
Summary:Understanding the runtime behavior of complex software systems requires dynamic analysis beyond traditional static inspection techniques. Modern applications rely on intricate hierarchies of interconnected objects, making runtime structure analysis crucial for debugging and software comprehension. Traditional approaches such as debuggers, logging, and memory profilers often require significant manual effort to visualize and compare complex object data structures. To address these limitations, we implemented Introspector, a general-purpose tool that provides interactive visualization of any runtime object data structure for applications written in any language compiled to the Java platform. Unlike existing tools, Introspector does not require source code access, supports real-time visualization, and enables automated structural comparisons of object graphs at different execution points. Additionally, it allows for report generation in both text and HTML formats. Introspector is designed to be lightweight, integrating seamlessly into any Java application via its JAR file, not requiring entering debug mode with the corresponding runtime performance overhead of other JDPA-based approaches. Introspector has been successfully applied in multiple domains, including software development, education, and scientific research. It has enabled developers to compare evolving data structures during program execution, educators to visually demonstrate complex programming concepts, and researchers to inspect object data structures such as deep neural networks and biological data structures.
ISSN:2352-7110