Click here to Skip to main content
15,867,686 members
Articles / Programming Languages / C#
Article

Data Debugger Visualizer

Rate me:
Please Sign up or sign in to vote.
5.00/5 (33 votes)
30 May 20052 min read 142K   3.2K   108   11
VS 2005 debug visualizers for DataSet, DataTable, DataView, DataRow and DataColumn objects.

Sample Image - DataDebuggerVisualizer.gif

Introduction

These data visualizers for Visual Studio 2005 extend the Special QuickWatch for a DataSet that I found invaluable in VS 2003.

What it does?

These visualizers provide the following features:

  • Visualization for DataSets, strongly typed DataSets, DataTables, DataViews, DataRows and DataColumns.
  • Modified rows display in red.
  • Modified cells display in bold red.
  • Added rows display in blue.
  • If deleted rows exist, they can be viewed by selecting the Deleted Rows radio button.
  • A Row Filter can be established for active or deleted rows, using standard row filter expressions.
  • Additional cell and row properties display in the bottom grid. These properties are: cell original value, cell error message, row state, row error message.
  • When visualizing a DataRow, the respective row will be selected in the visualizer's grid.
  • XML representation of the DataSet can be in the format generated by the XmlSerializer (as used by the Web Service framework, for example) or by the DataSet's WriteXmlSchema and WriteXml methods.

Using the code

For now, I'll leave examination of the code as an exercise for the reader.

Technical notes

  • The visualizer DLL file is installed into your [VS8]\Common7\Packages\Debugger\Visualizers directory as part of the build. To remove it, delete the DotNetDan.Visualizers.dll file.
  • Multi-threading is used to load the visualizer form at the same time as serializing across the data from the debuggee to the debugger process. This may not be the fastest technique on non-HyperThreaded single-CPU machines, and complicates the code, so is a potential refactor target.
  • The visualizers use the new binary RemotingFormat facility of the DataSet and DataTable objects for enhancing the performance of serializing the objects across the Debuggee and Debugger processes.
  • At the time of writing, the DataGridView control wasn't particularly well documented and so getting the styles right was of more effort than expected and may not be the best way.
  • Programmatically selecting a row inside of a DataGridView (or DataGrid) is still way too hard. It requires a combination of DataViews, BindingSources and brute force. See DataTableVisualizerTab.OnVisibleChanged for the code that does the trick.
  • The bottom "grid" that displays additional cell and row properties consists of text boxes and uses the .NET 2.0 IPropertyChange interface of the DataTableProperties object for its binding.
  • I intend to look at enabling modifications to the data in the near future. Oh yeah, and improve the icons. :)

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Australia Australia
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
QuestionNice post Pin
Tridip Bhattacharjee12-Dec-13 21:51
professionalTridip Bhattacharjee12-Dec-13 21:51 
GeneralVisual Studio 2008 Pin
JimSchultz7423-Apr-08 7:32
JimSchultz7423-Apr-08 7:32 
GeneralRe: Visual Studio 2008 Pin
AbsurdChampion26-Aug-08 10:43
AbsurdChampion26-Aug-08 10:43 
In other words, remove the Microsoft.VisualStudio.DebuggerVisualizers reference and replace it with the new Microsoft.VisualStudio.DebuggerVisualizers (9.0.0) reference.

(Sorry if I'm being too obvious, but took me a while to understand the previous statement)
GeneralEnhancement needed Pin
abdu21-Mar-07 13:56
abdu21-Mar-07 13:56 
GeneralNice! Pin
Alan Heywood8-Nov-06 16:59
Alan Heywood8-Nov-06 16:59 
GeneralGood work [modified] Pin
DanMyNews19-Jul-06 20:02
DanMyNews19-Jul-06 20:02 
QuestionHow do I use it? Pin
hongze1-Feb-06 6:14
hongze1-Feb-06 6:14 
Questionisn't it built-in functions in vs.net 2005? Pin
Huisheng Chen30-May-05 3:23
Huisheng Chen30-May-05 3:23 
AnswerRe: isn't it built-in functions in vs.net 2005? Pin
MP3Observer30-May-05 21:53
MP3Observer30-May-05 21:53 
AnswerRe: isn't it built-in functions in vs.net 2005? Pin
dotnetdan2-Jun-05 1:14
dotnetdan2-Jun-05 1:14 
GeneralRe: isn't it built-in functions in vs.net 2005? Pin
ToAoM30-Nov-05 10:19
ToAoM30-Nov-05 10:19 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.