This interface represents a stack frame property, a program document property, or some other property. The property is usually the result of an expression evaluation.
This use of "property" should not be confused with that meaning a member variable of a class, although an IDebugProperty2 can represent such an entity.
Call IDebugExpression2::EvaluateSync or IDebugExpression2::EvaluateAsync to obtain this interface, which represents the result of an evaluation. IDebugExpression2::EvaluateAsync returns this interface by sending an IDebugExpressionEvaluationCompleteEvent2 interface to the SDM, which in turn calls IDebugExpressionEvaluationCompleteEvent2::GetResult to retrieve the property.
IDebugPropertyCreateEvent2::GetDebugProperty returns this interface to provide the associated script document.
IDebugReturnValueEvent2::GetReturnValue returns this interface to represent the return value of a function.
IDebugProgram2::GetDebugProperty returns this interface to represent various properties of the program such as a name or a memory context.
IDebugStackFrame2::GetDebugProperty returns this interface to represent various properties of the stack frame such as local variables.
The following table shows the methods of IDebugProperty2.
Fills in a DEBUG_PROPERTY_INFO structure that describes a property.
Sets the value of a property from a string.
Sets the value of the property from the value of a given reference.
Enumerates the children of a property.
Returns the parent of a property.
Returns the property that describes the most-derived property of a property.
Returns the memory bytes that compose the value of a property.
Returns the memory context for a property value.
Returns the size, in bytes, of the property value.
Returns a reference to this property's value.
Returns the extended information of a property.
A property, as represented by an IDebugProperty2 interface, can be thought of as a value with a name, a type, and an address. In more general terms, an IDebugProperty2 can represent anything that has a hierarchical structure, with parents and child nodes.
A property is usually transitory, lasting only as long as the current stack frame, for example. On the other hand, a reference, as represented by an IDebugReference2 interface, lasts as long as the value remains in memory.
The IDE can use the IDebugProperty2 interface to let users browse and modify properties at run time.