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 |