Visual Studio使用DebuggerBrowsable和DebuggerDisplay自定义调试窗体
2012-09-25 15:54
148 查看
2011-10-25 09:46
使用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两个特性来自定义调试窗体的显示。当你调试一个非常复杂的对象时,这个是非常有用的,它可以使你的调试窗体非常简单。
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两个特性来自定义调试窗体的显示。当你调试一个非常复杂的对象时,这个是非常有用的,它可以使你的调试窗体非常简单。
相关文章推荐
- 在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示
- [翻译]如何使用Visual Studio的Debugger调试NDS自制软件
- 在Visual Studio中使用Pseudovariables来帮助调试
- 使用Visual Studio 2015远程调试Linux程序
- 使用Visual Studio 2010开发和调试Html5项目
- 在 Visual Studio中 使用Apache Cordova 开发安卓、iOS程序(自定义图标和闪屏)
- Windows 下的JavaScript调试 -- 使用Visual Studio
- 直接使用JDB解决ndk-gdb调试时的“waiting for debugger”弹窗不消失问题
- 使用Visual Studio调试用户模式进程(Debugging a User-Mode Process Using Visual Studio)
- Visual Studio 2012中使用自定义project properties
- 在Visual Studio中集成使用 Qt Opensource 版本 ||| 在 QtCreator 使用 VC 编译调试
- Visual Studio 2015中使用gdb远程调试linux程序
- Visual Studio的自定义调试可视化功能(for C++)
- 使用debugger语句调试JScript的郁闷
- [转]使用debugger调试JavaScript脚本
- 使用自定义验证组件库扩展 Windows 窗体
- 使用RouteDebugger对MVC路由进行调试
- [摘自MSDN] ASP.Net2.0学习 [2] 主题 2 :演练:在 Visual Studio 中使用主题自定义网站
- 使用InterDev调试ASP页面及用户自定义DLL
- 如何使用Visual Studio调试C#程序