{"id":2323,"date":"2012-07-12T18:13:00","date_gmt":"2012-07-12T18:13:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2012\/07\/12\/debugger-type-visualizers-for-c-in-visual-studio-2012\/"},"modified":"2021-10-01T16:06:17","modified_gmt":"2021-10-01T16:06:17","slug":"debugger-type-visualizers-for-c-in-visual-studio-2012","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/debugger-type-visualizers-for-c-in-visual-studio-2012\/","title":{"rendered":"Debugger Type Visualizers for C++ in Visual Studio 2012"},"content":{"rendered":"<p>&nbsp;<span style=\"line-height: 115%\">In Visual Studio 2012, one of the new features for C++ developers is the new native type visualization framework (natvis) added to the debugger which allows customizing the way data types are displayed in debugger variable windows (e. g. autos, watch, locals, and data tips). For those who are familiar with the <b>autoexp.dat<\/b> file that has been used in earlier versions of Visual Studio, this new visualization framework supersedes that and offers xml syntax, better diagnostics, versioning and multiple file support. <\/span><\/p>\n<div class=\"WordSection1\">\n<p style=\"text-align: justify\" class=\"MsoNormal\"><span style=\"line-height: 115%\">To illustrate how type visualizers help make it easier to inspect objects, the following screenshot shows how a std::vector&lt;int&gt; is displayed in the debugger <i>without<\/i> any type visualizers:<\/span><\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\">\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2012\/07\/7534.image1_.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2012\/07\/7534.image1_.png\" alt=\"Image 7534 image1\" width=\"624\" height=\"168\" class=\"aligncenter size-full wp-image-29002\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2012\/07\/7534.image1_.png 624w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2012\/07\/7534.image1_-300x81.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><\/p>\n<p style=\"text-align: center\" class=\"MsoNormal\" align=\"center\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\"><span style=\"line-height: 115%\">The view without type visualizers is not user-friendly and hard to read. You cannot easily see the size or the elements of the vector. Visual Studio ships with type visualizers for common data types such as std::vector and the default view for a std::vector using type visualizers is much more useful:<\/span><\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\">\n<p style=\"text-align: justify\" class=\"MsoNormal\"><span style=\"line-height: 115%\"><a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/8512.image2.png\"><img decoding=\"async\" border=\"0\" alt=\"\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/8512.image2.png\" \/><\/a><\/span><\/p>\n<p style=\"text-align: center\" class=\"MsoNormal\" align=\"center\"><span>&nbsp; <\/span><\/p>\n<h3>&nbsp;<\/h3>\n<h3>Creating a type visualizer for a custom data type<span style=\"line-height: 115%\"><\/span><\/h3>\n<p style=\"text-align: justify\" class=\"MsoNormal\"><span style=\"line-height: 115%\">If you have a custom data type you can easily override Visual Studio&rsquo;s default view of it using this framework and make it easy to inspect objects of that type. To demonstrate how you can do this, let&rsquo;s go through the process of creating one for the simple rectangle type shown in the code snippet below (the dummy code that uses it is also included):<\/span><\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\">\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span class=\"SpellE\"><span class=\"GramE\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 9.5pt\">struct<\/span><\/span><\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"> <\/span><span style=\"background: white;color: #2b91af;font-family: Consolas;font-size: 9.5pt\">Rectangle<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\">{<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"><span>&nbsp;&nbsp;&nbsp; <\/span><\/span><span class=\"GramE\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 9.5pt\">int<\/span><\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"> height;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"><span>&nbsp;&nbsp;&nbsp; <\/span><\/span><span class=\"GramE\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 9.5pt\">int<\/span><\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"> width;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\">};<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span class=\"SpellE\"><span class=\"GramE\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 9.5pt\">int<\/span><\/span><\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"> <\/span><span style=\"background: white;color: #6f008a;font-family: Consolas;font-size: 9.5pt\">_<span class=\"SpellE\">tmain<\/span><\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\">(<\/span><span class=\"SpellE\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 9.5pt\">int<\/span><\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"> <\/span><span class=\"SpellE\"><span style=\"background: white;color: gray;font-family: Consolas;font-size: 9.5pt\">argc<\/span><\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\">, <\/span><span style=\"background: white;color: #2b91af;font-family: Consolas;font-size: 9.5pt\">_TCHAR<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\">* <\/span><span class=\"SpellE\"><span style=\"background: white;color: gray;font-family: Consolas;font-size: 9.5pt\">argv<\/span><\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\">[])<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\">{<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"><span>&nbsp;&nbsp;&nbsp; <\/span><\/span><span style=\"background: white;color: #2b91af;font-family: Consolas;font-size: 9.5pt\">Rectangle<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"> <span class=\"SpellE\">myRectangle<\/span> = <span class=\"GramE\">{ 3<\/span>, 4 };<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"><span>&nbsp;&nbsp;&nbsp; <\/span><\/span><span style=\"background: white;color: #2b91af;font-family: Consolas;font-size: 9.5pt\">Rectangle<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"> myRectangle2 = <span class=\"GramE\">{ 4<\/span>, 4 };<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\">&nbsp;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"><span>&nbsp;&nbsp; <\/span><\/span><span class=\"GramE\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 9.5pt\">return<\/span><\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\"> 0;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\">}<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: black;font-family: Consolas;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p class=\"MsoNormal\">The debugger&rsquo;s default view of the &ldquo;<span class=\"SpellE\">myRectangle<\/span>&rdquo; variable which we are going to customize is as follows:<\/p>\n<p class=\"MsoNormal\">&nbsp;<\/p>\n<p style=\"text-align: left\" class=\"MsoNormal\" align=\"center\"><span><a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/3833.image3.png\"><img decoding=\"async\" border=\"0\" alt=\"\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/3833.image3.png\" \/><\/a>&nbsp; <\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span>Type visualizers for C++ types are specified in .natvis files. A natvis file is simply an xml file (with .natvis extension) that contains visualization rules for one or more types. At the start of each debugging session, Visual Studio processes any natvis files it can find in the following locations:<\/span><\/p>\n<ul>\n<li>\n<div style=\"text-align: justify;line-height: normal;text-indent: -0.25in;margin-bottom: 0pt\" class=\"MsoListParagraphCxSpFirst\"><span><span>&#8211;<span style=\"font: 7pt\/normal 'Times New Roman'\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><span>%VSINSTALLDIR%\\Common7\\Packages\\Debugger\\Visualizers (requires admin access)<\/span><\/div>\n<\/li>\n<li>\n<div style=\"text-align: justify;line-height: normal;text-indent: -0.25in;margin-bottom: 0pt\" class=\"MsoListParagraphCxSpMiddle\"><span><span>&#8211;<span style=\"font: 7pt\/normal 'Times New Roman'\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><span>%USERPROFILE%\\My Documents\\Visual Studio 2012\\Visualizers\\<\/span><\/div>\n<\/li>\n<li>\n<div style=\"text-align: justify;line-height: normal;text-indent: -0.25in;margin-bottom: 0pt\" class=\"MsoListParagraphCxSpMiddle\"><span><span>&#8211;<span style=\"font: 7pt\/normal 'Times New Roman'\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><span>VS extension folders <\/span><\/div>\n<\/li>\n<\/ul>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoListParagraphCxSpLast\"><span>&nbsp;<\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span>As the first visualizer for the rectangle type, create a new file called &ldquo;<span class=\"SpellE\">rectangle.natvis<\/span>&rdquo; containing the following xml (explained further below) and save <\/span>it in &ldquo;<span>My Documents\\Visual Studio 2012\\Visualizers&rdquo; folder.<\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\">\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span class=\"GramE\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&lt;?<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">xml<\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">version<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">1.0<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">encoding<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">utf-8<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">?&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&lt;<\/span><span class=\"SpellE\"><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">AutoVisualizer<\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">xmlns<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">http:\/\/schemas.microsoft.com\/vstudio\/debugger\/natvis\/2010<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">Type<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">Name<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">Rectangle<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&lt;<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">DisplayString<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;A <\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">rectangle with height = {height} and width = {width<span class=\"GramE\">}<span style=\"color: blue\">&lt;<\/span><\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">\/<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">DisplayString<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;\/<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">Type<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&lt;\/<\/span><span class=\"SpellE\"><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">AutoVisualizer<\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span>&nbsp;<\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\">\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span>After the file is saved, start debugging the code snippet we have for the type and view the &lsquo;<span class=\"SpellE\">myRectangle<\/span>&rsquo; variable in the watch window. The debugger now displays the object as:<\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\">\n<p style=\"text-align: left;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\" align=\"center\"><span><a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/3782.image4.png\"><img decoding=\"async\" border=\"0\" alt=\"\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/3782.image4.png\" \/><\/a>&nbsp;<\/span><\/p>\n<p style=\"text-align: center;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\" align=\"center\"><span>&nbsp; <\/span><\/p>\n<p style=\"text-align: center;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\" align=\"center\"><span>&nbsp;<\/span><\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\"><span style=\"line-height: 115%\">To explain the xml snippet in the natvis file, each <b>Type<\/b> element represents a visualizer entry for a type whose fully qualified name is specified in the <b>Name<\/b> attribute. <b>DisplayString<\/b> element customizes the string shown in the value column for the type. It accepts a mixture of arbitrary strings and expressions. Everything inside curly braces ({height}, {width} above) is interpreted as an expression and gets evaluated by the debugger.<\/span><\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\"><span style=\"line-height: 115%\">Let&rsquo;s assume you would like to enhance this view when the rectangle is actually a square and display something different. You can use the <b>Condition<\/b> attribute, which is available for many visualizer elements, to have if-else logic in the visualization entry. Add the following highlighted line to the visualizer entry and save the file:<\/span><\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\">\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span class=\"GramE\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&lt;?<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">xml<\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">version<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">1.0<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">encoding<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">utf-8<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">?&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&lt;<\/span><span class=\"SpellE\"><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">AutoVisualizer<\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">xmlns<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">http:\/\/schemas.microsoft.com\/vstudio\/debugger\/natvis\/2010<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">Type<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">Name<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">Rectangle<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span>&nbsp;<\/span><\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&lt;<\/span><span style=\"background: yellow;color: #a31515;font-family: Consolas;font-size: 8pt\">DisplayString<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: yellow;color: red;font-family: Consolas;font-size: 8pt\">Condition<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">height == width<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">This is a square with sides of {height<span class=\"GramE\">}<span style=\"color: blue\">&lt;<\/span><\/span><\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">\/<\/span><span style=\"background: yellow;color: #a31515;font-family: Consolas;font-size: 8pt\">DisplayString<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&lt;<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">DisplayString<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">This is a rectangle with height = {height} and width = {width<span class=\"GramE\">}<span style=\"color: blue\">&lt;<\/span><\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">\/<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">DisplayString<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;\/<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">Type<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\"><span style=\"background: white;color: blue;line-height: 115%;font-family: Consolas;font-size: 8pt\">&lt;\/<\/span><span class=\"SpellE\"><span style=\"background: white;color: #a31515;line-height: 115%;font-family: Consolas;font-size: 8pt\">AutoVisualizer<\/span><\/span><span style=\"background: white;color: blue;line-height: 115%;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"color: blue;line-height: 115%;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span><\/span>&nbsp;<\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span>Note that it is NOT necessary to restart Visual Studio for it to pick up the changes to a visualizer. Once you start the debugger and add &lsquo;<span class=\"SpellE\">myRectangle<\/span>&rsquo;, &lsquo;myRectangle2&rsquo; variables to the watch window, you can see a different string is shown for a rectangle object that is actually a square:<\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span><a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/5126.image5.png\"><img decoding=\"async\" border=\"0\" alt=\"\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/5126.image5.png\" \/><\/a><\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span>&nbsp;<\/span><\/p>\n<p style=\"text-align: center\" class=\"MsoNormal\" align=\"center\"><span>&nbsp;<\/span><\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\"><span style=\"line-height: 115%\">Just as you can customize the value of the variable shown in the value column, you can also customize the view of the child elements when the variable is expanded in the debugger windows. Let&rsquo;s say you would like to see the area of a rectangle in addition to its height and width during debugging. The <b>Expand<\/b> node, which allows you to define child elements for a type, can be used for this purpose. Add the highlighted section below to the visualizer entry and save the file:<\/span><\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\">\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span class=\"GramE\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&lt;?<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">xml<\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">version<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">1.0<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">encoding<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">utf-8<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">?&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&lt;<\/span><span class=\"SpellE\"><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">AutoVisualizer<\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">xmlns<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">http:\/\/schemas.microsoft.com\/vstudio\/debugger\/natvis\/2010<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">Type<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">Name<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">Rectangle<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&lt;<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">DisplayString<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: white;color: red;font-family: Consolas;font-size: 8pt\">Condition<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">height == width<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">A square with sides of {height<span class=\"GramE\">}<span style=\"color: blue\">&lt;<\/span><\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">\/<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">DisplayString<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&lt;<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">DisplayString<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\">A rectangle with height = {height} and width = {width<span class=\"GramE\">}<span style=\"color: blue\">&lt;<\/span><\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">\/<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">DisplayString<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: white;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&lt;<\/span><span style=\"background: yellow;color: #a31515;font-family: Consolas;font-size: 8pt\">Expand<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&lt;<\/span><span style=\"background: yellow;color: #a31515;font-family: Consolas;font-size: 8pt\">Item<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: yellow;color: red;font-family: Consolas;font-size: 8pt\">Name<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">height<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">height<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&lt;\/<\/span><span style=\"background: yellow;color: #a31515;font-family: Consolas;font-size: 8pt\">Item<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&lt;<\/span><span style=\"background: yellow;color: #a31515;font-family: Consolas;font-size: 8pt\">Item<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: yellow;color: red;font-family: Consolas;font-size: 8pt\">Name<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">width<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">width<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&lt;\/<\/span><span style=\"background: yellow;color: #a31515;font-family: Consolas;font-size: 8pt\">Item<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&lt;<\/span><span style=\"background: yellow;color: #a31515;font-family: Consolas;font-size: 8pt\">Item<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\"> <\/span><span style=\"background: yellow;color: red;font-family: Consolas;font-size: 8pt\">Name<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">=<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">area<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">&#8220;<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\">height * width<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&lt;\/<\/span><span style=\"background: yellow;color: #a31515;font-family: Consolas;font-size: 8pt\">Item<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&lt;\/<\/span><span style=\"background: yellow;color: #a31515;font-family: Consolas;font-size: 8pt\">Expand<\/span><span style=\"background: yellow;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"background: yellow;color: black;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;\/<\/span><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">Type<\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&lt;\/<\/span><span class=\"SpellE\"><span style=\"background: white;color: #a31515;font-family: Consolas;font-size: 8pt\">AutoVisualizer<\/span><\/span><span style=\"background: white;color: blue;font-family: Consolas;font-size: 8pt\">&gt;<\/span><span style=\"color: blue;font-family: Consolas;font-size: 8pt\"><\/span><\/p>\n<p style=\"text-align: justify;line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"color: blue;font-family: Consolas;font-size: 8pt\">&nbsp;<\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"line-height: 115%\">As you can guess, each <b>Item <\/b>node defines a single child element whose name is given by the <b>Name<\/b> attribute and whose value is given by the expression in the node text. This is the updated view with the area element added:<\/span><span style=\"line-height: 115%;font-size: 8pt\"><\/span><\/p>\n<p style=\"text-align: left\" class=\"MsoNormal\" align=\"center\"><span>&nbsp; <a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/0815.image6.png\"><img decoding=\"async\" border=\"0\" alt=\"\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/0815.image6.png\" \/><\/a><\/span><\/p>\n<h3>More information<\/h3>\n<p style=\"text-align: justify\" class=\"MsoNormal\">This blog post covers just a little bit of what you can do with the new native type visualization framework in the Visual Studio debugger. To learn more about it you can check out our <a href=\"http:\/\/code.msdn.microsoft.com\/Writing-type-visualizers-2eae77a2\">sample page<\/a> on msdn where we have more examples, xml syntax reference, instructions on turning on diagnostics and deploying visualizers via VSIX packages.<\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\">&nbsp;<\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\"><span>&nbsp; <a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/7178.profile3.jpg\"><img decoding=\"async\" style=\"border: 0px currentColor\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/7178.profile3.jpg\" width=\"50\" height=\"50\" \/><\/a><\/span><\/p>\n<p style=\"text-align: justify\" class=\"MsoNormal\"><span style=\"color: #1f497d\">Cagri Aslan, Developer on the Visual Studio Debugger team.<\/span><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;In Visual Studio 2012, one of the new features for C++ developers is the new native type visualization framework (natvis) added to the debugger which allows customizing the way data types are displayed in debugger variable windows (e. g. autos, watch, locals, and data tips). For those who are familiar with the autoexp.dat file that [&hellip;]<\/p>\n","protected":false},"author":289,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2323","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus"],"acf":[],"blog_post_summary":"<p>&nbsp;In Visual Studio 2012, one of the new features for C++ developers is the new native type visualization framework (natvis) added to the debugger which allows customizing the way data types are displayed in debugger variable windows (e. g. autos, watch, locals, and data tips). For those who are familiar with the autoexp.dat file that [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/2323","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/289"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=2323"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/2323\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/35994"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=2323"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=2323"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=2323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}