微软MVP Abhijit Jana
曾在个人网站Abhijit's World of .NET
上发表博文《Few Tips on Customizing Debugging Window View in Visual Studio
》,文中介绍了两个Visual Studio自定义调试窗体的小技巧。个人博客“用自己的语言写个Hello World
”版主朱祁林曾对此文进行了翻译
,现把译文转载于此,全文如下:
这篇文章讲述如何自定义你的调试窗体。这些技巧在你调试应用程序的时候是非常有用的。当你调试的时候,你可能希望简化调试窗体的信息,或者在调试窗体上除去对你不重要的不必要的信息,这篇文章将会帮助到你。
使用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两个特性来自定义调试窗体的显示。当你调试一个非常复杂的对象时,这个是非常有用的,它可以使你的调试窗体非常简单。
原文链接:Few Tips on Customizing Debugging Window View in Visual Studio
译文链接:Visual Studio自定义调试窗体两个小技巧
分享到:
相关推荐
6.1 visual studio 2010 team system的新增内容:历史调试 267 6.2 与visual basic 6兼容的注意事项 268 6.3 .net中的异常处理 268 6.4 结构化异常处理的关键字 269 6.4.1 try、catch和finally关键字 270 ...
三篇承上启下地讲解了VC#的开发技术和应用技巧。 第一篇介绍.NET Framework 3.0开发框架和C#语言的基础知识,透彻地讲解了面向对象开发思想在C#中的贯彻、基本的WinForm窗体编程模型、文件读写技术和注册表操作,使...
《高等学校计算机应用规划教材:Visual C# 2010程序设计教程》详细介绍了Visual C# 2010程序设计的基础知识、基本方法和应用技巧,共分14章,主要内容包括.NET平台与Visual Studio 2010开发环境、C#语言基础及面向...
本次课程设计利用《软件设计基础-VB》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。 要求: 1、对系统进行功能需求分析 2...
1.1 Visual Studio开发环境安装与配置 2 0001 安装Visual Studio 2005开发环境须知 2 0002 配置合适的Visual Studio 2005开发环境 2 0003 设置程序代码行序号 3 0004 开发环境全屏显示 3 0005 设置...
《VisualBasic2008应用程序开发实例精讲》语言简洁,内容丰富,结构合理,突出了应用性、实用性两个基本原则。不但详细介绍了VB 2008各种领域的应用开发技术,而且提供了相关理论知识、设计思路与实现方案,侧重于...
本书主要介绍了运用Visual C++ 5.0或6.0的高级编程技巧,内容涉及MFC程序设计的最新概念,全书提供了大量VC的编程实例,旨在帮助读者较为全面地掌握VC编程知识、技巧和方法。全书分为三个部分和附录。第一部分介绍...
Visual Studio 2008提高工作效率的小技巧 时间往往在不经意间就浪费掉了,比如我们在寻找上一个光标位置的时候,好好学习并利用下面的技巧,会提高工作效率,减少不必要浪费的时间,提高时间利用率,让生活更加美好...
通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到...
本书主要介绍了运用Visual C++ 5.0或6.0的高级编程技巧,内容涉及MFC程序设计的最新概念,全书提供了大量VC的编程实例,旨在帮助读者较为全面地掌握VC编程知识、技巧和方法。 全书分为三个部分和附录。第一部分...
本书主要介绍了运用Visual C++ 5.0或6.0的高级编程技巧,内容涉及MFC程序设计的最新概念,全书提供了大量VC的编程实例,旨在帮助读者较为全面地掌握VC编程知识、技巧和方法。全书分为三个部分和附录。第一部分介绍...
·分享c++程序的错误查找技术,并介绍通用的调试原则讨论每一个windows应用程序的结构和基本元素 ·举例说明如何使用mfc开发本地windows应用程序 ·指导读者用c++和c++/cli设计和创建大量的windows应用程序 ...
Visual Studio支持Visual C#,这是通过功能齐全的代码编辑器、项目模板、设计器、代码向导、功能强大且易于使用的调试器以及其他工具实现的。通过.NET Framework类库,可以访问多种操作系统服务和其他有用的精心设计...
98 <br>0153 如何自定义数字小数点左边分组位数 98 <br>0154 格式化输入数据为货币格式 99 <br>0155 如何计算两个整数的乘积 99 <br>0156 如何将二进制数转换为十进制数 100 <br>0157 如何...
实例108 计算两个矩形矩阵的乘积 129 第5章 面向对象编程技术 131 5.1 属性和方法 132 实例109 使用属性存储用户编号和姓名 132 实例110 通过定义方法求一个数的平方 133 实例111 使用重载方法实现不同类型数据的...
一个无标题栏,无关闭按钮,无状态栏的窗口,但是可以拖动,关闭时候请按Alt+F4,窗口的长宽比在一开始时是受限制的,不能被变小,只允许被拉大,去掉窗口的标题栏和关闭按钮等小技巧,也是值得参考的,献给C#初学者...