IDebugHostEvaluator3::EvaluateExpression 方法 (dbgmodel.h)
EvaluateExpression 方法可讓偵錯主機要求評估語言(例如:C++)表達式,並傳回以IModelObject 為的表達式評估結果值。 這個方法的特定變體只允許語言建構。 在未以語言顯示之偵錯主機的表達式評估工具內呈現的任何額外功能,會關閉評估的LINQ查詢方法。
因為這個方法只會使用由所偵錯的語言所定義的專案,因此此方法是可攜式且安全的,可從主機到主機使用。 實作特定語言偵錯的偵錯主機,應該以與偵錯相同語言的任何其他主機相同的方式來評估表達式。 因此,這是執行表達式評估的慣用方法。
語法
HRESULT EvaluateExpression(
IDebugHostContext *context,
PCWSTR expression,
IModelObject *bindingContext,
_COM_Errorptr_ IModelObject **result,
IKeyStore **metadata
);
參數
context
表達式評估所在的主機內容。 例如,如果因為指標取值而導致目標的記憶體讀取,則這個自變數會提供這些記憶體讀取所在的位址空間。
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 |