A system and method, useful in tracing program execution, for serializing
data, such as an object data, into consistent, structured (e.g., XML)
output. A serializer processes an object's data, and for each set of
data, records the object's data in a structured (e.g., XML) format that
reflects the object's current state. Nodes corresponding to fields and
properties of the object are nested in the structure. Simple types define
nodes with the current data value associated with the tag. More complex
types including arrays, collections, dictionaries and exceptions are
stored as individual members of a type, with any complex members further
broken down into sub-nodes. Object data including custom collections,
dictionaries, non-public fields and properties and properties with only
get-accessor are serialized. The resulting output, such as in an XML
formatted structure, is easy to read by humans, and is easily processed,
such as for automated analysis purposes.