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, the structure including one or more first live data objects each corresponding to a respective attribute or method of a second live data object, wherein the first and second live data objects are from the plurality of live data objects; 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, wherein one or more first shadow data objects each corresponding to a respective one of the first live data objects are arranged in the graph as child nodes of a second shadow data object which corresponds to the second live data object; and providing access to the generated shadow graph via a user interface, so that information regarding the plurality of live data objects is accessible through the shadow graph during said executing.