1. A computer-based method of debugging a debuggee computer program after an execution of at least a portion of the debuggee program, comprising: a) receiving a call graph having a plurality of nodes, each node representing a corresponding event that occurred during the debuggee program execution, the nodes ordered based on the debuggee program execution, including a first node representing a first event corresponding to a first machine address and corresponding to a source language statement and a second node representing a second event corresponding to a second machine address and corresponding to the source language statement; b) selectively clustering together the first node and the second node based on a comparison of the first machine address and the second machine address; and c) in response to a command to perform a step operation, selectively performing the step operation to include the first node and the second node, based on whether the first node and the second node are clustered.
6. The computer-based method of claim 1 , further comprising: a) retrieving a variable value stored at a location associated with the first node; b) performing a control flow analysis of at least a portion of the debuggee program; c) determining whether to propagate the variable value to a third node based on the analysis; and c) selectively providing the variable value based on the determination of whether to propagate the variable.