共用方式為


運算式評估工具的一般功能

這個主題適用於:

版本

Visual Basic

C#

F#

C++

Web Developer

Express

標題適用於 標題適用於 標題適用於 標題適用於 標題適用於

Pro、Premium 和 Ultimate

標題適用於 標題適用於 標題適用於 標題適用於 標題適用於

本主題說明通用於偵錯工具的各種不同運算式評估工具功能 (僅因語言而有所差異)。

隱含變數

在 Visual Basic 和 C# 中,您可以使用運算式評估工具來建立「隱含變數」(Implicit Variable)。 這些隱含變數絕不會超出範圍,並且可以當做任何其他變數。

在 C# 中,您可以藉著在運算式評估工具中宣告的方式來建立隱含變數。 例如,您可以在 [即時運算] 視窗中輸入下列 C# 程式碼:

int b = 100;

當您執行 [即時運算] 視窗中的這段程式碼時,新的隱含變數就會出現在 [區域變數] 視窗中,且變數名稱的前面會有 $ 符號。在此情況中會是 $b。

在 Visual Basic 中,您不能使用運算式評估工具來建立隱含變數。 不過,如果您是在 Visual Basic 運算式評估工具中使用未宣告的變數,這時會自動建立隱含變數。 Visual Basic 中的隱含變數不會列在 [區域變數] 視窗中。

中斷點

如果使用 [即時運算] 視窗來評估 Visual Basic 或 C# 方法或含有中斷點的函式,就會叫用該中斷點,且 [呼叫堆疊] 上會出現新的框架 (Frame)。 以下是 C# 範例:

    class Program
    {
        static void Main(string[] args)
        {
// Breakpoint here:
             int a = 20;
         }
    }

如果您在註解指示的位置設定中斷點,並按下 F5 鍵以編譯和執行程式,就會以一般方式叫用中斷點。 現在,如果您在 [即時運算] 視窗中輸入 Program.Main(null) 以評估 Main 方法,則會第二次叫用該中斷點,並且 [呼叫堆疊] 上會出現此方法的項目。

在監看式視窗中評估

為了避免出現討厭的副作用 (Side Effect),每當偵錯工具逐步執行時,函式或方法呼叫並不會自動進行評估。 而是會出現圖示,讓您可以手動更新結果。 這個圖示會出現在 [] 欄中。 如此可讓您以手動方式評估呼叫。 如需詳細資訊,請參閱副作用和運算式

物件識別

Visual Basic 無法使用此功能。

某些應用程式會建立同類別的許多執行個體。 在這些應用程式中,具有能夠分辨特定類別之執行個體的識別項,通常會很有幫助。 例如,如果類別的特定執行個體未如預期般運作,或者特定執行個體已經不止一次插入至集合,但是該集合應該只能插入該執行個體一次,識別項可能會派得上用場。

原生物件識別

在偵錯 Unmanaged 程式碼時,您可以藉由使用物件的位址來唯一識別該物件。 基於兩個原因,這點相當重要:

  • 只要使用物件的位址,就可以追蹤該物件。 這包括了使用位址來進行下列工作的能力:

    • 檢視位於該位址之物件的值

    • 檢查是否相等 通常物件的位址可以當做物件變數本身一樣地使用。

  • 您可以使用物件的位址,也就是執行個體,在該特定執行個體中的方法上設定中斷點。

    例如,假設您擁有屬於 CMyType 類別之執行個體的物件,且位址為 0xcccccccc。 您可以在該執行個體的 aMethod 方法上指定一個函式中斷點,如下所示:

    ((CMyType *) 0xcccccccc)->aMethod

Managed 物件識別

使用 Managed 程式碼時,您不能使用物件的位址來識別該物件。 相反地,您必須使用由 Common Language Runtime (CLR) 偵錯服務所產生且與物件關聯,稱為物件 ID 的整數。 這個數值是 CLR 偵錯服務所產生的正整數。 除了能夠唯一識別物件以外,物件 ID 值並不重要。

物件控制代碼會顯示為可變長度、十進位整數、數值後附加數字符號 (#),以及不以零開頭的形式,例如 5#。 控制代碼會出現在不同偵錯工具資料視窗的 [] 欄中。

若要建立變數的物件 ID,請以滑鼠右鍵按一下該變數,並選取 [設定物件 ID]。 偵錯工具會顯示一個數值,該數值的後面會加上井字號 (#),例如 123#。 若要刪除物件 ID,請以滑鼠右鍵按一下變數,然後選取 [刪除物件 ID]。

叫用中斷點時,您可以在 [監看式] 視窗中輸入變數的控制代碼。 偵錯工具會顯示物件 ID 的值,您可以就像對待其他任何變數一樣,展開並檢查該值。

您可以使用物件 ID 在特定執行個體的方法上設定中斷點。 例如,假設您有個物件是 CMyType 類別的執行個體,且該執行個體具有物件 ID 5#。 CMyType 類別包含 aMethod 方法。 您可以在執行個體 5# 的 aMethod 方法上設定函式中斷點,如下所示:

((CMyType) 5#).aMethod

您也可以在中斷點條件中使用物件 ID。 下列範例顯示如何在某條件下測試物件 ID。

this == 5#

如需如何指定中斷點條件的詳細資訊,請參閱 HOW TO:指定中斷點條件

請參閱

概念

在偵錯工具中檢視資料

其他資源

偵錯工具中的運算式

偵錯工具資料表