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 인수에 의해 지정된 주소 공간 내에서 런타임 형식 개체의 위치입니다. 위치 인수에서 지정한 위치와 같거나 같지 않을 수 있습니다.
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 |