Поделиться через


Метод 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

См. также раздел

Интерфейс IDebugHostSymbols