一起谈.NET技术,Visual Studio自定义调试窗体两个小技巧

  本文翻译:Few Tips on Customizing Debugging Window View in Visual Studio

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

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



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

  技巧1、使用DebuggerBrowsable特性

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

  它有三个状态:

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

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

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

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


class Program
{
static void Main(string[] args)
{
List<Student> student = new List<Student>();
student.Add(new Student { Roll = 1, Name = "Abhijit", Marks = 87, Addresses = new Address { Address1 = "add1", Address2 = "add2" } });
student.Add(new Student { Roll = 2, Name = "Abhishek", Marks = 41, Addresses = new Address { Address1 = "add3", Address2 = "add4" } });
student.Add(new Student { Roll = 3, Name = "Rahul", Marks = 67, Addresses = new Address { Address1 = "add5", Address2 = "" } });
student.Add(new Student { Roll = 4, Name = "Sunil", Marks = 91, Addresses = new Address { Address1 = "add11", Address2 = "add122" } });
student.Add(new Student { Roll = 5, Name = "Atul", Marks = 71, Addresses = new Address { Address1 = "add12", Address2 = "add222" } });
student.Add(new Student { Roll = 6, Name = "Kunal", Marks = 71, Addresses = new Address { Address1 = "add12", Address2 = "add222" } });
}
/// <summary>
/// Student Class
/// </summary>

class Student
{
public int Roll { get; set; }
public string Name { get; set; }
public int Marks { get; set; }
public Address Addresses { get; set; }
}

/// <summary>
/// Address of Students
/// </summary>
class Address
{

public string Address1 { get; set; }

public string Address2 { get; set; }
}

}

  下面,先看一下不使用这些特性是什么样的效果。我在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两个特性来自定义调试窗体的显示。当你调试一个非常复杂的对象时,这个是非常有用的,它可以使你的调试窗体非常简单。

时间: 2024-12-27 03:04:04

一起谈.NET技术,Visual Studio自定义调试窗体两个小技巧的相关文章

Visual Studio自定义调试窗体两个小技巧

这篇文章讲述如何自定义你的调试窗体.这些技巧在你调试应用程序的时候 是非常有用的.当你调试的时候,你可能希望简化调试窗体的信息,或者在调试 窗体上除去对你不重要的不必要的信息,这篇文章将会帮助到你.本文翻译: Few Tips on Customizing Debugging Window View in Visual Studio . 使用DebuggerBrowsable特性可以自定义调试窗体. 使用DebuggerDisplay特性可以自定义调试信息的显示. 要使用这些特性,需要引用Sys

总是弹出visual studio 实时调试器 三种解决办法

最近服务器老是弹出visual studio 实时调试器很是郁闷呀.关还关不掉.怎么解决呢 ,现像如下图所示: 下面我们一起来分析一下这种情况的原因: 弹出应用程序: Visual Studio 实时调试器: 发生了未处理的异常("下标越界: '[number: 0]'"),发生位置是 w3wp.exe [2472]. 对此异常的实时调试失败,错误为: 安装的调试器都没有启用实时调试.在 Visual Studio 中,可以从"工具"/"选项"/

断点-C# Microsoft visual studio 2012 调试问题

问题描述 C# Microsoft visual studio 2012 调试问题 我的vs2012 调试的时候在ie11打开的情况下能够调试,但是大多数时候要点击重新运行的那个按钮才能进入断点,但是在ie没有打开的情况下运行程序的时候,程序界面从ie中显示出来了,但是vs2012显示的是程序没有运行:还有就是关闭ie的时候程序不能停止调试,停止调试的时候ie也不会关闭!!求大神解

如何利用 Visual Studio 自定义项目或工程模板

原文:如何利用 Visual Studio 自定义项目或工程模板 在开发项目的时候,由其是商业性质的大型项目时,往往需要在每个代码文件上都加上一段关于版权.开发人员的信息,并且名称空间上都需要带有公司的标志.这个时候,是选择在开发的时候手动添加还是自动生成呢?   我们其实完全可以利用 Visual Studio 提供的模板工具自定义一套专属的模板.   自定义项目模板 假如当我添加一个 .cs 文件后,我希望默认添加的文件要看起来像这个样子:   如何实现 1. 随意新建一个工程或使用一个已经

关闭与恢复visual studio实时调试器

安装visual studio之后,一旦某些进程出现问题,总是出现"visual studio实时调试器"对话框,有时候感觉很烦人,下面是解决办法: 删除注册表项: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger  然后打开visua

Visual Studio 远程调试的步骤

使用场景 常用的主要是在部署的机器上程序出现问题, 而一般的部署机器上没有开发环境,此时需要准确的定位出错的原因时使用. 进行远程调试时,主机可以是任何支持 Visual Studio 的平台.远程计算机可以是 32 位或 64 位平台. 安装 远程计算机安装 Visual Studio的安装光盘上的/Remote Debugger目录下有x86和x64的版本 X86(rdbgsetup_x86.exe)用于调试 32位的程序 X64(rdbgsetup_x64.exe)用于调试64位的程序 默

2000条你应知的WPF小姿势 基础篇&lt;45-50 Visual Tree&amp;Logic Tree 附带两个小工具&gt;

原文:2000条你应知的WPF小姿势 基础篇<45-50 Visual Tree&Logic Tree 附带两个小工具> 在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C#  和 2,000 Things You Should Know About WPF .他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识.Follo

一起谈.NET技术,Visual Studio下使用jQuery的10个技巧

广泛流行的jQuery是一个开源的,跨浏览器和兼容CSS 3的JavaScript库,你可以用它简化你的JavaScript编码任务和操作(添加,编辑和删除)HTML内容中的DOM元素,本文介绍10个在Visual Studio下使用jQuery的10个有用的技巧,希望对你有所帮助. 你需要准备些什么 为了在Visual Studio中顺利使用jQuery,你需要安装下面这些软件: Visual Studio 2008 Visual Studio 2008 SP1 jQuery库 Visual

Visual Studio自定义项目或工程模板的用法

在开发项目的时候,由其是商业性质的大型项目时,往往需要在每个代码文件上都加上一段关于版权.开发人员的信息,并且名称空间上都需要带有公司的标志.这个时候,是选择在开发的时候手动添加还是自动生成呢? 我们其实完全可以利用 Visual Studio 提供的模板工具自定义一套专属的模板. 自定义项目模板 假如当我添加一个 .cs 文件后,我希望默认添加的文件要看起来像这个样子: 如何实现 1. 随意新建一个工程或使用一个已经存在的工程,在该项目内新添加一个普通的 class 文件,打开后应该和下图长得