An improved method and system for visualizing an object-oriented program's execution in a manner that facilitates understanding, debugging, and tuning programs of arbitrary size and complexity by visually depicting a sequence of one or more messages to an object or between objects as a tree. Each node in the tree represents an object, and each edge represents a message between the objects. To manage the complexity of what is displayed, the user may elect to collapse subtrees so that they appear in abbreviated form. The user may expand collapsed subtrees so that they are visible in full. By selectively expanding and collapsing subtrees, the user can examine only those parts of the execution that are immediately relevant. The user may specify additional criteria for classifying subtrees, i.e., the conditions under which two subtrees are deemed equivalent. The system can then consolidate equivalent subtrees automatically, replacing them with a more general execution pattern that subsumes them all. Furthermore, an execution pattern can be augmented with summary (e.g., performance or complexity) information. This summary information reflects characteristics of the message sequences, for example, the resource usage they incur, or a measure of their complexity. Preferably, the summary information is superimposed graphically on the execution pattern's graphical rendition.
|Original language||American English|
|State||Published - 17 Apr 2001|