Difference between revisions of "Environment diagram"

From CS 61A Wiki
Jump to: navigation, search
[checked revision][checked revision]
(External links)
Line 26: Line 26:
== External links ==
== External links ==
* [http://pythontutor.com/visualize.html#mode=edit Python Tutor] (environment diagram drawer)
* [http://pythontutor.com/composingprograms.html#mode=edit Python Tutor] (environment diagram drawer)

Revision as of 04:50, 24 June 2014

An environment diagram is a tool to show the state of a program after the execution of a certain number of lines. More precisely, it is a visualization of the frames created by running a program, along with the bindings of each frame.


Environment diagrams are divided into two columns: on the left side is the stack frame (where all frames are) and on the right side, the heap (where all objects are).


The stack frame is a group of frames. When a function is called, a new frame is created and placed on top of all the other frames. When that function terminates, the frame is removed.

Every local frame (i.e., not global) should have a frame number, a parent label, and a return value that will be filled out when the function terminates. Then, within the frame, names go on the left hand side, and the associated values go on the right hand side. Values can be primitives or object references (arrows pointing to an object in the heap).


The heap holds objects. Most commonly, these will be function objects, tuples, and lists.

  • function objects are labeled as func name(params) [parent=f], where f is the parent frame
  • tuples and lists are drawn as boxes for each element, labeled by its index



External links