다음을 통해 공유


IDebugHostEvaluator2::EvaluateExpression 메서드(dbgmodel.h)

EvaluateExpression 메서드를 사용하면 디버그 호스트가 언어(예: C++) 식을 평가하고 IModelObject로 boxed된 해당 식 계산의 결과 값을 반환하도록 요청할 수 있습니다. 메서드의 이 특정 변형은 언어 구문만 허용합니다. 언어에 없는 디버그 호스트의 식 계산기 내에 표시되는 추가 기능(예: LINQ 쿼리 메서드)은 평가에 대해 꺼져 있습니다.

이 메서드는 디버깅되는 언어로 정의된 항목만 사용하므로 이 메서드는 이식 가능하며 호스트에서 호스트로 안전하게 사용할 수 있습니다. 특정 언어에 대한 디버깅을 구현하는 디버그 호스트는 동일한 언어를 디버그하는 다른 호스트와 동일한 방식으로 이 메서드를 통해 식을 평가해야 합니다. 따라서 식 평가를 수행하는 데 선호되는 방법입니다.

구문

HRESULT EvaluateExpression(
  IDebugHostContext           *context,
  PCWSTR                      expression,
  IModelObject                *bindingContext,
  _COM_Errorptr_ IModelObject **result,
  IKeyStore                   **metadata
);

매개 변수

context

식 계산이 발생하는 호스트 컨텍스트입니다. instance 경우 포인터 역참조로 인해 대상의 메모리 읽기가 있는 경우 해당 메모리 읽기가 수행되는 주소 공간이 이 인수에 의해 지정됩니다.

expression

평가할 언어 식입니다. 이 문자열은 디버깅 중인 언어에서 유효한 식만 포함할 수 있습니다. 디버그 호스트의 식 계산기에서 사용할 수 있는 추가 구문이 포함되지 않을 수 있습니다.

bindingContext

기호(변수) 이름을 조회할 바인딩 컨텍스트입니다. C++의 경우 의미상 이 포인터 값과 동일합니다.

result

식 계산의 결과 값이 여기에 반환됩니다.

metadata

식 또는 결과와 연결된 모든 메타데이터가 여기에 반환됩니다.

반환 값

이 메서드는 성공 또는 실패를 나타내는 HRESULT를 반환합니다.

설명

코드 예제

ComPtr<IDebugHost> spHost;   /* get the host */
ComPtr<IModelObject> spThis; /* get some object, an example here: some native 
                                object with fields m_intVal and m_intVal2 */

ComPtr<IDebugHostEvaluator2> spEval;
if (SUCCEEDED(spHost.As(&spEval)))
{
    ComPtr<IModelObject> spResult;
    ComPtr<IKeyStore> spMetadata;
    if (SUCCEEDED(spEval->EvaluateExpression(
        USE_CURRENT_HOST_CONTEXT, 
        L"m_intVal + this->m_intVal2", 
        spThis.Get(), 
        &spResult, 
        &spMetadata)))
    {
        // spResult will have the result of a language evaluation of 
        // "m_intVal + this->m_intVal2" where the name binding context 
        // (e.g.: *this* pointer) is spThis
        // spMetadata will have any additional metadata (e.g.: display radix, etc...)
    }
}

요구 사항

요구 사항
헤더 dbgmodel.h

추가 정보

IDebugHostEvaluator2 인터페이스