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

最新文章

  1. Longest Absolute File Path
  2. Jetty官方文档翻译
  3. easyUI 树的上下文菜单
  4. linux 中printf的使用
  5. 在 mvc 中使用下拉列表
  6. linux和Windows下文本格式转换
  7. ASP.NET自定义错误页面
  8. Java线程池--ThreadPoolExecutor
  9. [java学习笔记]java语言核心----面向对象之static关键字
  10. ajax 跨域的几种方式
  11. selenium webdriver(1)---浏览器操作
  12. Drupal 7 模 .info 文件描述
  13. WebStorm的compass配置
  14. oracle rac常用的命令
  15. Delphi的TService 服务路径获取 Dll中获取文件路径
  16. transform子元素,绝对定位失效
  17. Combobox中禁止鼠标中键滚动list列表
  18. 处理过期的archivelog和rman备份
  19. 4667 Building Fence 解题报告
  20. A complete example using RAISE_APPLICATION_ERROR : raise_application_error

热门文章

  1. lodash.memoize
  2. git配置文件—— .editorconfig
  3. HihoCoder1449 后缀自动机三·重复旋律6
  4. Coderforces-455A
  5. 可扩展的Java线程池执行器
  6. 最新设计打样制作完成的FPGA视频开发板VIP—V101
  7. idea 上传svn忽略文件
  8. vue 点击修改样式
  9. 《Java练习题》习题集五
  10. [ASP.NET Core 3框架揭秘] 依赖注入[4]:一个Mini版的依赖注入框架