運算式評估工具架構
整合到 Visual Studio 的偵錯封裝的專屬的語言表示實作所需的運算式評估工具 (EE) 的介面,並且呼叫通用語言執行階段符號供應商 (SP) 和繫結器介面。 預存程序和繫結器物件,加上目前的執行位址的運算式都會經過評估的內容。 這些介面產生和使用的資訊代表 EE 架構中的主要概念。
概觀
正在剖析的運算式
當您偵錯程式時,會評估運算式,將多個原因而永遠偵錯程式當停止於中斷點 (可能是由使用者放置中斷點或因例外狀況)。 這個運算子位於 Visual Studio 會取得堆疊框架上,當這個時刻起,以IDebugStackFrame2介面,從 [偵錯引擎 (DE)。 然後呼叫 Visual Studio IDebugStackFrame2::GetExpressionContext以取得IDebugExpressionContext2介面。 這個介面表示的內容,在其中可以評估運算式。 IDebugExpressionContext2::ParseText是評估程序的進入點。 直到目前為止,所有的介面是由 DE 實作的。
當IDebugExpressionContext2::ParseText是呼叫,DE 執行個體化得知 ee 給予發生中斷點的原始程式檔的語言相關聯 (DE 也產生 SH 到目前為止)。 得知 ee 給予由IDebugExpressionEvaluator介面。 接著再呼叫 DE IDebugExpressionEvaluator::Parse若要剖析的運算式轉換的運算式 (以文字形式),您可以準備進行評估。 這個剖析的運算式由IDebugParsedExpression介面。 請注意運算式通常會不會再計算到目前為止。
DE 建立物件實作IDebugExpression2介面,將IDebugParsedExpression物件至IDebugExpression2物件,並傳回IDebugExpression2獲取IDebugExpressionContext2::ParseText。
評估運算式
Visual Studio 會呼叫其中一個IDebugExpression2::EvaluateSync或IDebugExpression2::EvaluateAsync來評估剖析的運算式。 這兩種方法呼叫IDebugParsedExpression::EvaluateSync (IDebugExpression2::EvaluateSync呼叫方法,而IDebugExpression2::EvaluateAsync呼叫的方法,透過背景執行緒) 評估剖析的運算式,並傳回IDebugProperty2代表已剖析的運算式的型別與值的介面。 IDebugParsedExpression::EvaluateSync使用提供的 SH、 位址和繫結器,將剖析的運算式轉換成實際的值,由IDebugProperty2介面。
比方說
在執行中的程式中叫用中斷點之後,使用者選擇檢視中的變數快速監看式對話方塊。 這個對話方塊會顯示該變數的名稱、 它的值和其型別。 通常,使用者可以變更的值。
當快速監看式會顯示對話方塊,正在檢查變數的名稱以文字格式來傳送IDebugExpressionContext2::ParseText。 這會傳回IDebugExpression2物件,表示剖析的運算式,在此情況下,該變數。 IDebugExpression2::EvaluateSync然後會產生呼叫IDebugProperty2物件,代表變數的值和型別,以及它的名稱。 它會顯示此資訊。
如果使用者變更變數的值, IDebugProperty2::SetValueAsString使用新的值,變更在記憶體中變數的值,所以當程式結束時將會使用呼叫時執行。
請參閱顯示區域變數如需詳細資訊,在此程序顯示變數的值。 請參閱變更區域變數的值如需有關如何變更變數的值。
本章節內容
評估內容
提供當 DE 呼叫得知 ee 給予所傳遞的引數。主要運算式評估工具介面
說明撰寫 EE,連同評估內容時所需的重要介面。