2

I have downloaded and installed cppvisualizers to allow better handling of boost data structure in Visual Studio 2012.

https://cppvisualizers.codeplex.com/

It does not have support for boost::numeric::ublas::vector and boost::numeric::ublas::matrix so I tried to follow the instructions available here regarding natvis support: http://code.msdn.microsoft.com/windowsdesktop/Writing-type-visualizers-2eae77a2

I have added a file called ublas.natvis into \Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers. It contains the following code:

    <?xml version="1.0" encoding="utf-8"?>

    <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">

      <Type Name="boost::numeric::ublas::vector&lt;*&gt;">
        <DisplayString>"UBLAS Vector: Test Failure"</DisplayString>
        <Expand>
          <Item Name="[size]">_Mylast - _Myfirst</Item>
          <Item Name="[capacity]">_Myend - _Myfirst</Item>
          <ArrayItems>
            <Size>_Mylast - _Myfirst</Size>
            <ValuePointer>_Myfirst</ValuePointer>
          </ArrayItems>
        </Expand>
      </Type>

      <Type Name="std::vector&lt;*&gt;">
        <DisplayString>"STD Vector: Test Success"</DisplayString>
        <Expand>
          <Item Name="[size]">_Mylast - _Myfirst</Item>
          <Item Name="[capacity]">_Myend - _Myfirst</Item>
          <ArrayItems>
            <Size>_Mylast - _Myfirst</Size>
            <ValuePointer>_Myfirst</ValuePointer>
          </ArrayItems>
        </Expand>
      </Type>

    </AutoVisualizer>

The visualizer is able to successfully detect my custom string for std::vector. However no luck when I hover over boost::numeric::ublas::vector. Could you please guide me on setting up debugger visualizers for boost vector and matrix.

Thanks for your help.

Atlas
  • 153
  • 3
  • 12

2 Answers2

5

You should enable Natvis diagnostic for Visual Studio 2012 like described in your article (http://code.msdn.microsoft.com/windowsdesktop/Writing-type-visualizers-2eae77a2) Natvis diagnostics, that help me a lot with debugging cppvisualizers.

Update:

Visualizer for vector and matrix (just create .natvis file in %USERPROFILE%\My Documents\Visual Studio 2012\Visualizers\ with this content)

<?xml version='1.0' encoding='utf-8'?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">

<Type Name="boost::numeric::ublas::unbounded_array&lt;*,*&gt;">
    <DisplayString>{{ size={size_} }}</DisplayString>
    <Expand>
        <Item Name="[size]">size_</Item>
        <ArrayItems>
            <Size>size_</Size>
            <ValuePointer>data_</ValuePointer>
        </ArrayItems>
    </Expand>
</Type>

<Type Name="boost::numeric::ublas::vector&lt;*&gt;">
    <DisplayString>{data_}</DisplayString>
    <Expand>
        <ExpandedItem>data_</ExpandedItem>
    </Expand>
</Type>

<Type Name="boost::numeric::ublas::matrix&lt;*&gt;">
    <DisplayString>{{ size={size1_}x{size2_} }}</DisplayString>
    <Expand>
        <ExpandedItem>data_</ExpandedItem>
    </Expand>
</Type>

</AutoVisualizer>
KindDragon
  • 6,558
  • 4
  • 47
  • 75
  • You sir are indeed a kind dragon. Thanks for the input. – Atlas Nov 14 '12 at 10:49
  • @Atlas: And also take a look at KindDragons VS extensions: http://visualstudiogallery.msdn.microsoft.com/c7e02633-86d9-4262-b745-6cc647afb3a8 and http://visualstudiogallery.msdn.microsoft.com/61f12e7a-bc62-4b2c-b02e-d66014688c2e – dalle Dec 16 '13 at 07:47
0

Try <Type Name="boost::numeric::ublas::vector&lt;*,*&gt;"> instead.

Mikhail
  • 20,685
  • 7
  • 70
  • 146