2

Visual Studio 2012でブーストデータ構造をより適切に処理できるように、cppvisualizersをダウンロードしてインストールしました。

https://cppvisualizers.codeplex.com/

boost :: neuro :: ublas::vectorとboost::neuro :: ublas :: matrixはサポートされていないので、natvisのサポートに関するここで利用可能な指示に従うようにしました:http://code.msdn.microsoft 。 com / windowsdesktop / Writing-type-visualizers-2eae77a2

ublas.natvisというファイルを\ProgramFiles(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>

ビジュアライザーは、std::vectorのカスタム文字列を正常に検出できます。ただし、boost :: neuro :: ublas::vectorにカーソルを合わせると運が悪くなります。ブーストベクトルとマトリックス用のデバッガビジュアライザーの設定について教えてください。

ご協力いただきありがとうございます。

4

2 に答える 2

5

記事( http://code.msdn.microsoft.com/windowsdesktop/Writing-type-visualizers-2eae77a2 )で説明されているように、Visual Studio 2012のNatvis診断を有効にする必要があります。これは、cppvisualizerのデバッグに大いに役立ちます。

アップデート:

ベクトルと行列のビジュアライザー(%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 に答える