1. A system for observing an internal state of a software application executing in a runtime environment, the system comprising: processing resources including memory and at least one processor, the processing resources being configured to control the system to perform operations comprising: traversing a structure of a plurality of live data objects in the software application executing in the runtime environment; generating a graph of shadow data objects based on the traversing, each shadow data object of the graph corresponding to a live data object of the executing software application; and providing access to the generated shadow graph via a user interface.