Annotating source or object code to track the interesting events at run-time generates the trace. The user of the system can control which actors are traced for a given execution, so for every trace there is also information about how the trace was derived. The trace file is of binary format. The instrumentor utilizes this file to annotate source or object code. The pattern specifies an ordered list of interactions, where one or more of the elements of the list can be a wildcard denoting interpolated events that do not conceptually contribute to matching a scenario.
Actors allow scenarios to be described at different levels of abstraction.
Two scenarios can be compared using the actor containment hierarchy and looking for the longest common sub-sequence of interactions. Scenarios may be interleaved subsets of interactions with respect to an execution trace, for either sequential or concurrent programs. The simplest scenarios are fully sequential, non-interleaved, determined when the entire execution trace is available. Complexity is added, as only pieces of the full trace are available and even more as concurrent, interleaved threads exist in the trace. An execution scenario can be expressed in a file format translatable into an internal data structure understandable by the program model and the trace analyzer.