如果我说 .NET 世界上最厉害的开发平台(语言),资深的同仁肯定不会往下看了,因为这将是一个无休止的争论,到头来搞不好还是人身攻击。然而,如果我说 Visual Studio 是世界上最友好最强大的开发工具,估计是没有几个人会反对的。说它强大,首先就体现在它为广大的码农朋友们提供的各种调试的可能性。
从宏观看,程序的调试无非就是在程序的运行过程中查看程序的数据,以了解程序的运行状态。既然要查看数据,我们的第一步就是要设置断点。从今天起,我们将从如何巧设断点以及查看数据两个方面来重新学习和了解 Visual Studio,看它为码农们到底提供了哪些方便,我们每周了解一个小点:
- 巧设断点
- Lambda 表达式中中断
- 条件中断
- 没有源代码也看可以调试 -- 根据方法名中断
- 断点的管理和妙用
- 查看数据
- 查看方法的返回值
- DebuggerDisplay Attribute 是什么好东东?
- 调教你的 Output 窗口
- 巧写日志帮大忙
这一次我们来看如何在 Lambda 表达式内设置中断。
如果一个 Lambda 代码块包含了多条语句,我们可以很轻松地对其中一条语句设置断点,这个没有什么特别的。最简单的办法就是让光标进入其中的一行,然后F9。但是,如果一个 Lambda 表达式只有一行语句,也能在 Lambda 表达式内部设置断点吗? 是的! 那如何做呢?
举个例子来说明。对于以下几句代码,我们要在其中的 Lambda 表达式内部设置断点。
如果我们仅仅是把光标移入 var values = dictionary.Where(x => x.Value.Contains("F")) 这一行(比方说光标在第一个字符旁)并点击 F9, 当程序在该断点停下来时,该行语句中的 Lambda 表达式还完全没有执行。点击 F10 后,赋值也执行完毕。这个断点对 Lambda 表达式完全不起作用。
要在 Lambda 表达式 x => x.Value.Contains("F") 中设置断点,我们有两个办法:
1. 右键点击表达式中的语句,如 x.Value.Contains("F") 中的任何部位,在弹出的菜单中选择Breakpoint -> Insert Breakpoint。
2. 把光标移入表达式中的语句,如 x.Value.Contains("F") 中的任何部位,点击 F9。
是不是很简单,哈哈。
如果在一个断点反复在你不需要的时候被击中,你是不是很烦啊,下次我们就来看看如何为断点设置各种条件吧。