2

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

https://cppvisualizers.codeplex.com/

它不支持 boost::numeric::ublas::vector 和 boost::numeric::ublas::matrix 所以我尝试按照此处提供的关于 natvis 支持的说明进行操作:http://code.msdn.microsoft 。 com/windowsdesktop/Writing-type-visualizers-2eae77a2

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

    <?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>

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

谢谢你的帮助。

4

2 回答 2

5

您应该为 Visual Studio 2012 启用 Natvis 诊断,如您的文章 ( http://code.msdn.microsoft.com/windowsdesktop/Writing-type-visualizers-2eae77a2 ) 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>
于 2012-11-13T13:33:44.600 回答
0

试试<Type Name="boost::numeric::ublas::vector&lt;*,*&gt;">吧。

于 2012-11-02T21:17:12.267 回答