none
Visual Studio 2017 Professional C++ ウォッチリストのvectorの参照について RRS feed

  • 質問


  • いつもお世話になっております。
    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と同じ表示方法はできないでしょうか。

    ご教示お願いいたします。

    2019年10月2日 10:03

すべての返信

  • 「メニュー->ツール->オプション->デバッグ->全般->オブジェクトの生の構造体を変数ウィンドウに表示する」のチェックは外れてますか?

    #外れてるならnatvis設定ファイルが壊れてる?


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2019年10月2日 11:41
  • 「メニュー->ツール->オプション->デバッグ->全般->オブジェクトの生の構造体を変数ウィンドウに表示する」のチェックは外れてますか?

    #外れてるならnatvis設定ファイルが壊れてる?


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    >「メニュー->ツール->オプション->デバッグ->全般->オブジェクトの生の構造体を変数ウィンドウに表示する」のチェック

    こちらのチェックは外れています。

    >#外れてるならnatvis設定ファイルが壊れてる?

    stl.natvisには、

    以下の記述がありました。

      <!-- VC 2013 -->
      <Type Name="std::vector&lt;bool,*&gt;" 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] &gt;&gt; ($i % _EEN_VBITS)) &amp; 1)</ValueNode>
              </IndexListItems>
          </Expand>
      </Type>

      <!-- VC 2015 -->
      <Type Name="std::vector&lt;bool,*&gt;">
        <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] &gt;&gt; ($i % _EEN_VBITS)) &amp; 1)</ValueNode>
              </IndexListItems>
          </Expand>
      </Type>

      <Type Name="std::_Vb_reference&lt;*&gt;">
          <AlternativeType Name="std::_Vb_iterator&lt;*&gt;" />
          <AlternativeType Name="std::_Vb_const_iterator&lt;*&gt;" />
          <DisplayString>{(bool)((*_Myptr &gt;&gt; _Myoff) &amp; 1)}</DisplayString>
          <Expand>
              <Item Name="[ptr]">_Myptr</Item>
              <Item Name="[offset]">_Myoff</Item>
          </Expand>
      </Type>

    適用されていない可能性がある場合、

    有効化させる設定ありましたらご教示お願いします。


    2019年10月2日 23:16
  • ごまのあざらしさん、こんにちは。フォーラムオペレーターの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までお気軽にお問い合わせください。~

    2019年10月17日 7:48
    モデレータ