IDebugHostEvaluator::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<IDebugHostEvaluator> 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 |