Natvis Visual Studio 2012增强矢量和矩阵

Atl*_*las 2 c++ boost debuggervisualizer visual-studio-2012

我已经下载并安装了cppvisualizers,以便在Visual Studio 2012中更好地处理boost数据结构.

https://cppvisualizers.codeplex.com/

它不支持boost :: numeric :: ublas :: vector和boost :: numeric :: ublas :: matrix所以我试着按照这里有关natvis支持的说明:http://code.msdn.microsoft . COM/windowsdesktop /写入型展示台,2eae77a2

我已将一个名为ublas.natvis的文件添加到\ Program Files(x86)\ Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers中.它包含以下代码:

    <?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>
Run Code Online (Sandbox Code Playgroud)

可视化工具能够成功检测到std :: vector的自定义字符串.但是当我将鼠标悬停在boost :: numeric :: ublas :: vector上时,没有运气.能否指导我为boost矢量和矩阵设置调试器可视化器.

谢谢你的帮助.

Kin*_*gon 5

你应该像你的文章(http://code.msdn.microsoft.com/windowsdesktop/Writing-type-visualizers-2eae77a2)Natvis诊断中所描述的那样为Visual Studio 2012启用Natvis诊断,它可以帮助我调试cppvisualizers.

更新:

矢量和矩阵的可视化器(只需%USERPROFILE%\My Documents\Visual Studio 2012\Visualizers\使用此内容创建.natvis文件)

<?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>
Run Code Online (Sandbox Code Playgroud)