Visual Studio 調試系列6 監視變量(使用監視窗口和快速監視窗口)


當你進行調試時,可以使用 監視窗口快速監視窗口 來監視變量和表達式。 僅在調試會話期間,這兩個窗口才可用。

監視窗口可以在調試時一次顯示多個變量。 快速監視對話框一次僅顯示單個變量,並可以繼續調試之前,必須關閉。

01 觀察使用監視窗口變量
示例代碼:
 private static void Main(string[] args)
 {
    int a, b, c;
    a = 1;
    b = 2;
    c = 0;

    for (int i = 0; i < 10; i++)
    {
       a++;
       b *= 2;
       c = a + b;
    }

    Console.WriteLine("Press any key to exit."); // 在調試模式下保持控制台打開
    Console.ReadKey();
}
  1. 在c = a + b;行設置斷點,按F9。

  2. 開始調試通過選擇綠色啟動箭頭或調試 > 開始調試,或按F5。 在斷點處暫停執行。

  3. 打開監視窗口,通過選擇窗口調試 > Windows > 監視 > 觀看 1,或按Ctrl+Alt+W > 1.

    可以打開其他Watch窗口中的,選擇 windows 2, 3,或者4。

  4. 在監視窗口中,選擇空的行,並編輯寫入類型變量a。 執行相同操作bc

  5. 繼續進行調試,通過選擇調試 > 單步執行或按F11根據需要以繼續。 for循環多次執行時,a b c 的值分別發生變化。

         

02 在監視窗口中使用表達式

在監視窗口中,可以使用任何有效的表達式以計算其值。

例如,對於前面部分中的代碼,可以獲取三個值的平均值通過輸入(a + b + c) / 3,觀看窗口:

在監視窗口中計算表達式的規則通常與代碼中的語言表達式的計算規則相同。 如果表達式具有語法錯誤,出現相同的編譯器錯誤,如代碼編輯器中所示。 例如,在上述表達式中的有拼寫錯誤生成中的出現此錯誤監視窗口:

監視窗口中可能會顯示一個帶有兩個波浪條紋圖標圓圈。 此圖標表示調試器會計算該表達式,因為潛在的跨線程依賴關系。 計算代碼需要暫時,運行您的應用程序中的其他線程,但由於在中斷模式下,應用程序中的所有線程通常已都停止。 允許其他線程暫時運行可能對您的應用程序和調試器的狀態的意外的影響可以忽略斷點和這些線程上的異常等事件。

03 在監視窗口中搜索
04 在監視窗口中使用對象 Id (C#和 Visual Basic)

該功能請參考《Visual Studio 調試系列3 斷點》在條件表達式中使用對象 Id (C#和F#僅)。基本相同。

05 動態視圖和監視窗口
一些腳本語言(例如,javascript或python)使用動態或duck類型,並且.NET 4.0及更高版本支持在正常調試窗口中難以觀察到的對象。
示例程序:
 private static void Main(string[] args)
 {
    dynamic student = new { Name = "張三", Age = 25, Sex = "" };
            
    Console.WriteLine("Name:" + student.Name);
    Console.WriteLine("Age:" + student.Age);
    Console.WriteLine("Sex:" + student.Sex);

    Console.WriteLine("Press any key to exit."); // 在調試模式下保持控制台打開
    Console.ReadKey();
 }

監視窗口中顯示這些對象作為動態對象,從實現的類型創建 IDynamicMetaObjectProvider  接口。

動態對象節點顯示動態成員的動態對象,但不允許編輯成員值。下面3個窗口中都無法編輯成員值。

06 觀察單個變量或使用快速監視表達式
 可以使用快速監視觀察單個變量。

 在表達式文本框中輸入新的表達式,點擊【重新計算】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM