は、私は非常に奇妙な理由で、私は(私のためC:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers
)私のVSのインストールディレクトリにあるstl.natvisファイルを答えを見つけると私は私のプロジェクトに追加したことを自動的にデバッガによって認識されないれます。
解決策は私の解決策(右クリック→新しい項目の追加)にDebugger visualization file (.natvis)
を追加して、stl.natvis
ファイルの内容をこの新しいファイルにコピー/ペーストすることでした。リビルド後、標準のstd:文字列がデバッガによって適切に表示されます。
完全にするために、2015年
<!-- VC 2015 -->
<Type Name="std::basic_string<char,*>">
<DisplayString Condition="_Mypair._Myval2._Myres < _Mypair._Myval2._BUF_SIZE">{_Mypair._Myval2._Bx._Buf,na}</DisplayString>
<DisplayString Condition="_Mypair._Myval2._Myres >= _Mypair._Myval2._BUF_SIZE">{_Mypair._Myval2._Bx._Ptr,na}</DisplayString>
<StringView Condition="_Mypair._Myval2._Myres < _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Buf,na</StringView>
<StringView Condition="_Mypair._Myval2._Myres >= _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Ptr,na</StringView>
<Expand>
<Item Name="[size]" ExcludeView="simple">_Mypair._Myval2._Mysize</Item>
<Item Name="[capacity]" ExcludeView="simple">_Mypair._Myval2._Myres</Item>
<Item Name="[allocator]" ExcludeView="simple">_Mypair</Item>
<ArrayItems>
<Size>_Mypair._Myval2._Mysize</Size>
<ValuePointer Condition="_Mypair._Myval2._Myres < _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Buf</ValuePointer>
<ValuePointer Condition="_Mypair._Myval2._Myres >= _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Ptr</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<!-- VC 2015 -->
<Type Name="std::basic_string<wchar_t,*>">
<AlternativeType Name="std::basic_string<unsigned short,*>" />
<AlternativeType Name="std::basic_string<char16_t,*>" />
<DisplayString Condition="_Mypair._Myval2._Myres < _Mypair._Myval2._BUF_SIZE">{_Mypair._Myval2._Bx._Buf,su}</DisplayString>
<DisplayString Condition="_Mypair._Myval2._Myres >= _Mypair._Myval2._BUF_SIZE">{_Mypair._Myval2._Bx._Ptr,su}</DisplayString>
<StringView Condition="_Mypair._Myval2._Myres < _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Buf,su</StringView>
<StringView Condition="_Mypair._Myval2._Myres >= _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Ptr,su</StringView>
<Expand>
<Item Name="[size]" ExcludeView="simple">_Mypair._Myval2._Mysize</Item>
<Item Name="[capacity]" ExcludeView="simple">_Mypair._Myval2._Myres</Item>
<Item Name="[allocator]" ExcludeView="simple">_Mypair</Item>
<ArrayItems>
<Size>_Mypair._Myval2._Mysize</Size>
<ValuePointer Condition="_Mypair._Myval2._Myres < _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Buf</ValuePointer>
<ValuePointer Condition="_Mypair._Myval2._Myres >= _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Ptr</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="std::basic_string<char32_t,*>">
<DisplayString Condition="_Mypair._Myval2._Myres < _Mypair._Myval2._BUF_SIZE">{_Mypair._Myval2._Bx._Buf,s32}</DisplayString>
<DisplayString Condition="_Mypair._Myval2._Myres >= _Mypair._Myval2._BUF_SIZE">{_Mypair._Myval2._Bx._Ptr,s32}</DisplayString>
<StringView Condition="_Mypair._Myval2._Myres < _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Buf,s32</StringView>
<StringView Condition="_Mypair._Myval2._Myres >= _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Ptr,s32</StringView>
<Expand>
<Item Name="[size]" ExcludeView="simple">_Mypair._Myval2._Mysize</Item>
<Item Name="[capacity]" ExcludeView="simple">_Mypair._Myval2._Myres</Item>
<Item Name="[allocator]" ExcludeView="simple">_Mypair</Item>
<ArrayItems>
<Size>_Mypair._Myval2._Mysize</Size>
<ValuePointer Condition="_Mypair._Myval2._Myres < _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Buf</ValuePointer>
<ValuePointer Condition="_Mypair._Myval2._Myres >= _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Ptr</ValuePointer>
</ArrayItems>
</Expand>
</Type>
編集
は、最終的な時計のコンソールの下を参照してください。Visual Studio用のstd ::文字列を扱うstl.natvis
の一部以下を参照してください。 (また、stl.natvis
の一部をコピーする必要があることに注意してください。完全コピー/過去が機能しないようです)
テストケースにはどのような種類のNatvis XMLファイルを含めましたか? –
ありがとう - 私の答えを参照してください - stl.natvisファイルは、デバッガによって考慮されませんでした。 – Malick