C#調試程序——斷點+幾種觀察數據的方法


C#調試程序——斷點+觀察數據的方法

1.寫本文的背景

因為程序的調試非常重要,他可以讓自己不斷地利用Visual Studio的強大去查找定位自己的問題所在之處。從而,達到糾正自己程序錯誤的地方,健壯自己的程序,讓問題變得越來越少,程序變得越來越健康。故作此文,而且日后會將實用的調試程序方法不斷進行迭代更新。

2.調試與測試

調式與測試實際有異曲同工之妙,只不過對象不同。測試面向的是產品級,系統級;而調試往往是程序里的某一部分,某個方法,某個屬性或者對象。最終效果也很類似,好的測試人員,測試方案可以將產品系統的問題解決在搖籃中;好的調試方法也會讓你對程序的運行理解更深刻,對問題的查找定位變得更容易,讓軟件運行得更穩定。

3.斷點調試

3.1 F10

單步調試,會跳過自定義方法。

3.2 F11

單步調試,會進入自定義方法執行調試。

3.3 SHIFT+F11

跳出當前方法。

當鼠標停留在某變量上面的時候,會顯示它的賦值情況

4.監視

4.1 按照1方法打斷點,單步調試。

4.2 打開監視窗口

4.3 輸入變量

在監視窗口輸入要監視的對象或者屬性,點擊回車。

4.4展開監視對象

展開監視對象,在監視窗口可以觀察關心的數據。

5.即時窗口

5.1 輸入對象或者屬性

輸入之后,點擊回車。

5.2 觀察數據

在即時窗口觀察關心的數據。

6. 局部變量

6.1 局部變量窗口

如下路徑打開局部變量窗口。

6.2 顯示變量

對應的輸出窗口會把所有的當前方法的局部變量進行自動顯示。你也可以再此窗口中找到你關心的數據進行展開顯示。

7. 輸出窗口

7.1 打開輸出窗口

打開輸出窗口如下圖路徑

7.2 Debug輸出指令

這里需要將視圖對象(即json序列)對象進行序列化。

7.3 數據輸出成功如下

8 C#計算一段代碼的運行時間

利用System.DateTime.Now:

static void SubTest()
{
  DateTime beforDT = System.DateTime.Now;
  
  //耗時巨大的代碼
  
  DateTime afterDT = System.DateTime.Now;
  TimeSpan ts = afterDT.Subtract(beforDT);
  Console.WriteLine("所測試代碼總共花費{0}ms.", ts.TotalMilliseconds);
}

9 Assert數據斷點

在Nunit測試框架下(或者XUnit,MSTest都是同理)

        [Test]
        public void ColumnsShouldBeAutoGeneratedIfNoColumnsAreSpecified()
        {
            var package = _personList.ToPackage();
            Assert.AreEqual(3,package.Workbook.Worksheets[1].Dimension.Columns);
        }

Assert.AreEqual(3,package.Workbook.Worksheets[1].Dimension.Columns);
表示當package.Workbook.Worksheets[1].Dimension.Columns值等於3時,測試通過;不等於3時,在此處報錯。


免責聲明!

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



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