質問者
Visual Studio 2017 Professional C++ ウォッチリストのvectorの参照について

質問
-
いつもお世話になっております。
Visual Studio 2017のウォッチリストの見方について質問させていただきます。
Visual Studio 2010では、ウォッチリストのvectorの値は、
std::vector<string> vec;
vec[0]
vec[1]
vec[2]
という風にツリー構造で表示されていましたが、Visual Studio 2017では、
std::_Vector_alloc<std::_Vec_base_types<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::allocator<std::basic_string<char,std::char_traits<char>, ...
という風な表示がされてしまいます。Visual Studio 2010と同じ表示方法はできないでしょうか。
ご教示お願いいたします。
すべての返信
-
「メニュー->ツール->オプション->デバッグ->全般->オブジェクトの生の構造体を変数ウィンドウに表示する」のチェックは外れてますか?
#外れてるならnatvis設定ファイルが壊れてる?
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
>「メニュー->ツール->オプション->デバッグ->全般->オブジェクトの生の構造体を変数ウィンドウに表示する」のチェック
こちらのチェックは外れています。
>#外れてるならnatvis設定ファイルが壊れてる?
stl.natvisには、
以下の記述がありました。
<!-- VC 2013 -->
<Type Name="std::vector<bool,*>" Priority="MediumLow">
<DisplayString>{{ size={_Mysize} }}</DisplayString>
<Expand>
<Item Name="[capacity]" ExcludeView="simple">(_Myvec._Myend - _Myvec._Myfirst) * _EEN_VBITS</Item>
<IndexListItems>
<Size>_Mysize</Size>
<ValueNode>(bool)((_Myvec._Myfirst[$i / _EEN_VBITS] >> ($i % _EEN_VBITS)) & 1)</ValueNode>
</IndexListItems>
</Expand>
</Type><!-- VC 2015 -->
<Type Name="std::vector<bool,*>">
<Intrinsic Name="size" Expression="_Mysize" />
<Intrinsic Name="capacity" Expression="_Myvec.capacity() * _EEN_VBITS" />
<DisplayString>{{ size={size()} }}</DisplayString>
<Expand>
<Item Name="[capacity]" ExcludeView="simple">capacity()</Item>
<Item Name="[allocator]" ExcludeView="simple">_Myvec._Mypair</Item>
<IndexListItems>
<Size>_Mysize</Size>
<ValueNode>(bool)((_Myvec._Mypair._Myval2._Myfirst[$i / _EEN_VBITS] >> ($i % _EEN_VBITS)) & 1)</ValueNode>
</IndexListItems>
</Expand>
</Type><Type Name="std::_Vb_reference<*>">
<AlternativeType Name="std::_Vb_iterator<*>" />
<AlternativeType Name="std::_Vb_const_iterator<*>" />
<DisplayString>{(bool)((*_Myptr >> _Myoff) & 1)}</DisplayString>
<Expand>
<Item Name="[ptr]">_Myptr</Item>
<Item Name="[offset]">_Myoff</Item>
</Expand>
</Type>適用されていない可能性がある場合、
有効化させる設定ありましたらご教示お願いします。
-
ごまのあざらしさん、こんにちは。フォーラムオペレーターのHarukaです。
MSDNフォーラムにご投稿くださいましてありがとうございます。私が知っている限り、VS2017ウォッチウィンドウは、あなたが行うように表示されません。
一般的なケースは次のように示されます。この問題に直面する前に、VS2017 またはシステム ファイルに変更を加えましたか。vec配列の構造は名前フィールドに表示されますが、VS2017ではtypeフィールドに表示されると言いました。
vs2017の表示はこの図と一致していますか。そうでない場合、いくつかのファイルが壊れていると思います。 したがって、VSを元の設定に復元できます。•このパスのすべてのファイルを削除する "C:\ Users \ xxx(ユーザーアカウント名)\ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_xxxx"
•VSを開きます->ツール->設定のインポートとエクスポート->すべての設定をリセットしますどうぞよろしくお願いいたします。
MSDN/ TechNet Community Support Haruka
~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~