Visual Studio使用DebuggerBrowsable和DebuggerDisplay自定义调试窗体

来源:互联网 发布:同志网络剧2017 编辑:程序博客网 时间:2024/05/16 07:05
2011-10-25 09:46

Visual Studio使用DebuggerBrowsable和DebuggerDisplay自定义调试窗体

使用DebuggerBrowsable特性可以自定义调试窗体。

使用DebuggerDisplay特性可以自定义调试信息的显示。

要使用这些特性,需要引用System.Diagnostics命名空间。

技巧1、使用DebuggerBrowsable特性

你可以通过在属性上使用DebuggerBrowsable特性来自定义调试窗体。这些特性可以用任何属性、字段和索引上。 DebuggerBrowsable的构造函数需要一个DebuggerBrowsableState 参数。 DebuggerBrowsableState用来指定调试信息在窗体上显示的方式。

它有三个状态:

1、Collapsed :如果设置DebuggerBrowsableState为Collapsed 。那么调试信息折叠显示。默认为Collapsed

2、Never :调试窗体不显示调试信息

3、RootHidden :隐藏调试信息的根元素,只显示子元素信息,想了解更多,看MSDN。

下面我将通过一个例子叙述如何使用DebuggerBrowsable 和DebuggerBrowsableState。开始之前,看下面这段代码:

01  class Program 02  { 03      static void Main(string[] args) 04      { 05          List<Student> student = new List<Student>(); 06          student.Add(new Student { Roll = 1, Name = "Abhijit", Marks = 87, Addresses = new Address { Address1 = "add1", Address2 = "add2" } }); 07          student.Add(new Student { Roll = 2, Name = "Abhishek", Marks = 41, Addresses = new Address { Address1 = "add3", Address2 = "add4" } }); 08          student.Add(new Student { Roll = 3, Name = "Rahul", Marks = 67, Addresses = new Address { Address1 = "add5", Address2 = "" } }); 09          student.Add(new Student { Roll = 4, Name = "Sunil", Marks = 91, Addresses = new Address { Address1 = "add11", Address2 = "add122" } }); 10          student.Add(new Student { Roll = 5, Name = "Atul", Marks = 71, Addresses = new Address { Address1 = "add12", Address2 = "add222" } }); 11          student.Add(new Student { Roll = 6, Name = "Kunal", Marks = 71, Addresses = new Address { Address1 = "add12", Address2 = "add222" } }); 12      } 13      /// <summary> 14      /// Student Class 15      /// </summary> 16    17      class Student 18      { 19          public int Roll { get; set; } 20          public string Name { get; set; } 21          public int Marks { get; set; } 22          public Address Addresses { get; set; } 23      } 24    25      /// <summary> 26      /// Address of Students 27      /// </summary> 28      class Address 29      { 30    31          public string Address1 { get; set; } 32    33          public string Address2 { get; set; } 34      } 35    36  } 

下面,先看一下不使用这些特性是什么样的效果。我在main 函数的结尾放置一个断点。你可以得到下面的调试窗体。

从上图中可以看到有6个student对象,每个对象的值都不同。Addresses是类Address的对象,它的调试信息值是隐藏的。

现在,我想要看到address的所有属性信息,隐藏Marks 属性。为了实现这样的需求,需要为给student 类中的Marks 和Addresses属性添加DebuggerBrowsable特性。

调试信息显示如下图:

技巧2、使用DebuggerDisplay特性

使用DebuggerDisplay可以定义类和字段在调试窗体中如何显示。使用 DebuggerDisplay可以改变调试窗体中显示的信息和变量,使它显示你想要的信息。

看下面没有使用DebuggerDisplay 的调试窗体。

默认情况下,每一个study对象你只得到NameSpace.ClassName这样的显示信息。我们可以使用DebuggerDisplay来自定义显示的信息。 DebuggerDisplay 构造函数需要显示名作为参数。你可以传递指定参数来显示。做如下设置:

看下效果:

使用DebuggerDisplay的时候必须注意,在{}中必须给出类的正确属性。

如我将Roll写成Rolls,如下图:

调试窗体会提示:The name 'Rolls' does not exist in the current context。如下图:

总结:本文讲述了使用DebuggerBrowsable 和DebuggerDisplay两个特性来自定义调试窗体的显示。当你调试一个非常复杂的对象时,这个是非常有用的,它可以使你的调试窗体非常简单。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 房产权50年以后怎么办 在香港手机没电怎么办 学校官网登陆忘记密码怎么办 网上申报学校忘记密码怎么办 专转本想换专业怎么办 发生工伤没有平均公资怎么办? 单招过了不想去怎么办 22岁了还想复读怎么办 父母不让我读大专了怎么办 专升本考试失利怎么办 高考复读一年后失败了怎么办? 医保住院超过30万怎么办 北京医保超过2万怎么办 工伤公司垫付医疗费没法报销怎么办 司法考试照片耳朵露不出来怎么办 新华社毕业证照片用光了怎么办 农村父母投靠落户社保怎么办 退休后投靠父母户口怎么办 要离婚想儿子了怎么办 怀孕期间离婚了孩子户口怎么办 常州武进区怎么办居住证明 跟老公离婚了户口怎么办 离婚了不给户口怎么办 父母不给户口本迁户口怎么办 产能置换的煤矿职工怎么办 如果是单位集体户小孩读书怎么办 异地防疫不给打怎么办? 青岛市办理大龄就业困难补贴怎么办 就业登记证掉了怎么办 就业信息填错了怎么办 小孩入学父母无单位怎么办 和公婆住一起很压抑怎么办 不想和公婆一起住怎么办 在家啃老三年了怎么办 新时代卫计工作怎么办 被公司辞退不发工资怎么办 被公司辞退后不发工资怎么办 领导分配的工作太多怎么办 领导故意不给活怎么办 户口迁移后医疗社保怎么办 有了c证考b证怎么办