Entries:
Comments:
Discussions:

Loading user information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading user information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

Making your debugging pretty with DotNetPretty

Special Note: This is the #1,000th Coding4Fun Blog post! Woot! Thanks for everyone's continued support and comments. And now, lets, well, look at some code! :)

There you are, at a break point, debugging and need to quickly see a variable's data. Hover over it and you see... the class name...

image

So we expand it and start hunting for the data we're really looking for. What I'd really like to see is...

image

Gordon Beeming, Microsoft Visual Studio ALM MVP, shared a project recently (okay, it's been a couple months now...) showing how you can keep in context when debugging, see the data not just the type/ToString, using the magic of the DebuggerDisplayAttribute. He not only shows off this attribute but created a project to make it even easier to use.

There's a number of cool features, but what he really shows off is how you can add this attribute to classes you don't own or even have the source for!

Introduction to DotNet Pretty

...

Because I found this awesome visualizer [TPL Dataflow Debugger Visualizer] I decided that everything while debugging could be awesome if there were more of these so I have created a GitHub project called DotNet Pretty where I plan on creating many visualizers to really try light up the debugging experience.

What is DebuggerDisplayAttribute?

In case you don't know DebuggerDisplayAttribute is used when you want to have a "pretty" representation of the properties in your class when seeing it in the debugger.

What MSDN says

Debugger display attributes allow the developer of the type, who specifies and best understands the runtime behavior of that type, to also specify what that type will look like when it is displayed in a debugger.

How do you implement them

You simple place the DebuggerDisplay Attribute on a class like below

image

When the break point is hit instead of you seeing the objects ToString() implementation of the method as below

image

which of course you could override to show a nice message if you wanted to, you will get something like below

image

It doesn't seem like such a big deal with 1 object but think of how easy it would be to know stuff about objects when they in a list if they each implemented this attribute. Now obviously to use the attribute like this you need to own the object so you can add the attribute and release it.

DotNet Pretty's first contribution

The first contribution to DotNet Pretty is one that was used in the training which allows you to use the DebuggerDisplay Attribute in a different way.

Code

This time you specify the target in the attribute like below

...

As you can see this is just floating in a random .cs file so it doesn't have to be placed anywhere specific in the code.

What it looks like

This time instead of seeing the ToString() method

image

You will see

image

...

[Click through to see the entire post]

TFS Work Item Visualizers

In my last post (Introduction to DotNet Pretty) I mentioned that I would be added more visualizers to DotNet Pretty soon. Today I finally managed to get around to that and added some visualizers for TFS Work Items.

3 new visualizers were added 2 debugger display visualizers and 1 debugger visualizer. The first is for Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemType and just displays the Name of the Work Item Type

image

The next  one added was for Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem and that displays the Status, Id and Title of a work item which is awesome for viewing the results of a query during debugging Smile.

image

Now having the above is very useful but drilling down into fields was a nightmare so I decided to create a nice visualizer for Work Item which would show you the work item on a form as it would be inside Visual Studio. You simple click the little arrow next to the value and then click on View Work Item

image

and then you will notice that your life has just been changed. Any links you click on from within this window will open in the web access and not in another dialog as you might expect.

... [Check out the entire post]

Gordon-Beeming/DotNet-Pretty

Installation

Copy the output assembly (DotNetPretty.dll) to C:\Users\[username]\Documents\[Visual Studio Version]\Visualizers, i.e.: C:\Users\GordonB\Documents\Visual Studio 2013\Visualizers

Current Visualizers

SQL
Debugger Display
  • System.Data.SqlClient.SqlConnection
TFS
Debugger Display
  • Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem
  • Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemType
Debugger Visualizer
  • Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem



Tags:

Follow the discussion

  • Oops, something didn't work.

    Getting subscription
    Subscribe to this conversation
    Unsubscribing
    Subscribing

Remove this comment

Remove this thread

Close

Comments closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.