Метод IDebugHostSymbols::GetMostDerivedObject (dbgmodel.h)
GetMostDerivedObject будет использовать систему типов отладчика для определения типа среды выполнения объекта из его статического типа. Для выполнения этого анализа этот метод будет использовать только символические сведения и эвристические данные, доступные на уровне системы типов. Такие сведения могут включать C++ RTTI (сведения о типах времени выполнения) или анализ формы таблиц виртуальных функций объекта. Он не включает такие элементы, как предпочтительный тип среды выполнения в IModelObject.
Если анализ не может найти тип среды выполнения или не удается найти тип среды выполнения, отличный от статического типа, переданного в метод, расположение и тип входных данных могут быть переданы. По этим причинам метод не завершится ошибкой.
Синтаксис
HRESULT GetMostDerivedObject(
IDebugHostContext *pContext,
Location location,
IDebugHostType *objectType,
Location *derivedLocation,
IDebugHostType **derivedType
);
Параметры
pContext
Контекст, в котором данное расположение является допустимым. Если это значение не указано, контекст будет считаться идентичным контексту, заданному objectType.
location
Расположение статического типизированного объекта в адресном пространстве, заданном аргументом pContext или аргументом objectType.
objectType
Статический тип объекта в заданном расположении.
derivedLocation
Расположение типизированного объекта среды выполнения в адресном пространстве, заданном аргументом pContext или аргументом objectType. Это может быть или не совпадать с расположением, заданным аргументом location.
derivedType
Здесь будет возвращен тип среды выполнения объекта . Это может быть или не совпадать с типом, переданным в аргументе objectType.
Возвращаемое значение
Этот метод возвращает HRESULT, указывающее на успех или сбой.
Комментарии
Образец кода
ComPtr<IDebugHost> spHost; /* get the host */
ComPtr<IDebugHostType> spStaticType; /* get the static (compile time) type of
some object (see IModelObject::GetTargetInfo) */
Location staticLocation; /* get the static location of some object
(see IModelObject::GetTargetInfo) */
ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
ComPtr<IDebugHostType> spRuntimeType;
Location runtimeLocation;
if (SUCCEEDED(spSym->GetMostDerivedObject(USE_CURRENT_HOST_CONTEXT,
spStaticType.Get(),
staticLocation,
&spRuntimeType,
&runtimeLocation)))
{
// spRuntimeType contains the runtime type of the object as
// determined from type system means (e.g.: RTTI or v-table analysis)
// runtimeLocation contains the location of the runtime type of the object
}
}
Требования
Требование | Значение |
---|---|
Заголовок | dbgmodel.h |