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时,在此处报错。
The Sky is the limit.