天天看點

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

    。 執行相同操作

    b

    c

    Visual Studio 調試系列6 監視變量(使用監視視窗和快速監視視窗)
  5. 繼續進行調試,通過選擇調試 > 單步執行或按F11根據需要以繼續。 

    for

    循環多次執行時,a b c 的值分别發生變化。
Visual Studio 調試系列6 監視變量(使用監視視窗和快速監視視窗)

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

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

例如,對于前面部分中的代碼,可以擷取三個值的平均值通過輸入

(a + b + c) / 3,

觀看視窗:

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

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

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

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

03 在監視視窗中搜尋

該功能請參考《Visual Studio 調試系列5 檢查變量(使用自動視窗和局部變量視窗)》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個視窗中都無法編輯成員值。

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

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

 可以使用快速監視觀察單個變量。

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

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

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

成在管理,敗在經驗;嬴在選擇,輸在不學!  貴在堅持!

歡迎關注作者頭條号 張傳甯IT講堂,擷取更多IT文章、視訊等優質内容。

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

個人作品

1、BIMFace.Community.SDK.NET

     開源位址:https://gitee.com/NAlps/BIMFace.SDK

     系列部落格:https://www.cnblogs.com/SavionZhang/p/11424431.html

     系列視訊:https://www.cnblogs.com/SavionZhang/p/14258393.html

2、ZCN.NET.Common

     開源位址:https://gitee.com/NAlps/zcn.net.common

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

技術棧

 1、Visual Studio、.C#/.NET、.NET Core、MVC、Web API、RESTful API、gRPC、SignalR、Python

 2、jQuery、Vue.js、Bootstrap

 3、資料庫:SQLServer、MySQL、PostgreSQL、Oracle、SQLite、Redis、MongoDB、ElasticSearch、TiDB、達夢DM、人大金倉、 神通、南大通用 GBase、華為 GaussDB 、騰訊 TDSQL 、阿裡 PolarDB、螞蟻金服 OceanBase、東軟 OpenBASE、浪潮雲溪資料庫 ZNBase

 4、ORM:Dapper、Entity Framework、FreeSql、SqlSugar、分庫分表、讀寫分離

 5、架構:領域驅動設計 DDD、ABP

 6、環境:跨平台、Windows、Linux(CentOS、麒麟、統信UOS、深度Linux)、maxOS、IIS、Nginx、Apach

 7、移動App:Android、IOS、HarmonyOS、微信、小程式、快應用、Xamarin、uni-app、MUI、Flutter、Framework7、Cordova、Ionic、React Native、Taro、NutUI、Smobiler

 雲原生、微服務、Docker、CI/CD、DevOps、K8S;

 Dapr、RabbitMQ、Kafka、分布式、大資料、高并發、負載均衡、中間件、RPC、ELK;

 .NET + Docker + jenkins + Github + Harbor + K8S;

出處:www.cnblogs.com/SavionZhang

作者:張傳甯   微軟MCP、系統架構設計師、系統內建項目管理工程師、科技部創新工程師。

          專注于微軟.NET技術(.NET Core、Web、MVC、WinForm、WPF)、通用權限管理系統、工作流引擎、自動化項目(代碼)生成器、SOA 、DDD、 雲原生(Docker、微服務、DevOps、CI/CD);PDF、CAD、BIM 審圖等研究與應用。

          多次參與電子政務、圖書教育、生産制造等企業級大型項目研發與管理工作。

          熟悉中小企業軟體開發過程:需求分析、架構設計、編碼測試、實施部署、項目管理。通過技術與管理幫助中小企業快速化實作網際網路技術全流程解決方案。

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

如有問題,可以通過郵件[email protected]聯系。共同交流、互相學習。

如果您覺得文章對您有幫助,請點選文章右下角【推薦】。您的鼓勵是作者持續創作的最大動力!