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时,在此处报错。

posted @ 2019-06-16 16:32  JerryMouseLi  阅读(...)  评论(...编辑  收藏