[VS2015]vectorのウォッチ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
purin52002
記事: 235
登録日時: 2年前
連絡を取る:

[VS2015]vectorのウォッチ

#1

投稿記事 by purin52002 » 2年前

こんにちは
今回はVS2015のvectorのウォッチについて質問があります。

最近vector型の変数をウォッチすると_myval...のように表示されます。
以前はv[0]:1、v[1]:1のように表示されていたのですが、、、

正直非常に見づらいです。
どなたか治し方をご存じではないでしょうか?

ちなみに、この現象が起こるようになった心当たりとして

vsの再インストール
プロパティシートの追加、変更

が挙げられます。
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

みえ
記事: 23
登録日時: 2年前

Re: [VS2015]vectorのウォッチ

#2

投稿記事 by みえ » 2年前

[オプション] > [デバッグ] > [全般] > [オブジェクトの生の構造体を変数ウィンドウに表示する] にチェックが入っているのかもしれません。

[全般] ([オプション] ダイアログ ボックス - [デバッグ])
https://msdn.microsoft.com/ja-jp/library/85yzd16c.aspx

英語版で恐縮ですが、手元の Visual Studio 2015 の環境だと添付の画像のようになりました。
添付ファイル
vs2015.PNG

Math

Re: [VS2015]vectorのウォッチ

#3

投稿記事 by Math » 2年前

式を編集するだけではない?。
画像

コード:

#include <chrono>
#include <iostream>
#include <numeric>
#include <vector>
#include <algorithm>
#include <iomanip>
#define MAXMIN(i) int ux##i, un##i; setUnusedMaxMin(use, ux##i, un##i)
using namespace std;

const int n = 4;
const int N = n * n;
const int s = N * (N + 1) / 2 / n;

void report(const vector<int>& x) {
  for (unsigned i = 0; i < x.size(); ++i) {
    cout << setw(3) << x[i];
    if ((i + 1) % n == 0) cout << endl;
  }
  cout << endl;
}

#ifdef _MSC_VER
inline void setUnusedMaxMin(const unsigned long used, int& ux, int& un) {
  unsigned long tmp = used ^ ((1 << (N + 1)) - 2);
  _BitScanReverse((unsigned long*)&ux, tmp);
  _BitScanForward((unsigned long*)&un, tmp);
}
#endif
#ifdef __GNUC__
inline void setUnusedMaxMin(const unsigned used, int& ux, int& un) {
  unsigned tmp = used ^ ((1 << (N + 1)) - 2);
  ux = 31 - __builtin_clz(tmp);
  un = __builtin_ctz(tmp);
}
#endif

int main() {
  auto t0 = std::chrono::high_resolution_clock::now();

int solutions = 0;
#pragma omp parallel for reduction (+:solutions)
for  (int x00 = 1;                                               x00 <= N - 3;                                           ++x00) {                   unsigned use  = 1 << x00;
for  (int x01 = 1;                                               x01 <= N;                                               ++x01) { if (!(use & (1 << x01))) { use ^= 1 << x01; MAXMIN(02);
for  (int x02 = max(un02, s - x00 - x01 - ux02);                 x02 <= min(ux02, s - x00 - x01 - x00 - 1);              ++x02) { if (!(use & (1 << x02))) { use ^= 1 << x02;
const int x03 = s - x00 - x01 - x02;                                                                                              if (!(use & (1 << x03))) { use ^= 1 << x03;
for  (int x04 = 1;                                               x04 <= N;                                               ++x04) { if (!(use & (1 << x04))) { use ^= 1 << x04;
for  (int x05 = 1;                                               x05 <= N;                                               ++x05) { if (!(use & (1 << x05))) { use ^= 1 << x05; MAXMIN(06);
for  (int x06 = max(un06, s - x04 - x05 - ux06);                 x06 <= min(ux06, s - x04 - x05 - un06);                 ++x06) { if (!(use & (1 << x06))) { use ^= 1 << x06;
const int x07 = s - x04 - x05 - x06;                                                                                              if (!(use & (1 << x07))) { use ^= 1 << x07; MAXMIN(08);
for  (int x08 = max(un08, s - x00 - x04 - ux08);                 x08 <= min(ux08, s - x00 - x04 - max(x03 + 1, un08));   ++x08) { if (!(use & (1 << x08))) { use ^= 1 << x08; MAXMIN(09);
for  (int x09 = max(un09, s - x01 - x05 - ux09);                 x09 <= min(ux09, s - x01 - x05 - un09);                 ++x09) { if (!(use & (1 << x09))) { use ^= 1 << x09; MAXMIN(10);
for  (int x10 = max(un10, s - min(x02 + x06, x08 + x09) - ux10); x10 <= min(ux10, s - max(x02 + x06, x08 + x09) - un10); ++x10) { if (!(use & (1 << x10))) { use ^= 1 << x10;
const int x11 = s - x08 - x09 - x10;                                                                                              if (!(use & (1 << x11))) { use ^= 1 << x11;
const int x12 = s - x00 - x04 - x08;                                                                if (s == x03 + x06 + x09 + x12 && !(use & (1 << x12))) { use ^= 1 << x12;
const int x13 = s - x01 - x05 - x09;                                                                                              if (!(use & (1 << x13))) { use ^= 1 << x13;
const int x14 = s - x02 - x06 - x10;                                                                                              if (!(use & (1 << x14))) { use ^= 1 << x14;
const int x15 = s - x12 - x13 - x14;         if (x00 < x15 && x15 <= N && s == x03 + x07 + x11 + x15 && s == x00 + x05 + x10 + x15 && !(use & (1 << x15))) {
  #pragma omp critical
  report({ x00, x01, x02, x03, x04, x05, x06, x07, x08, x09, x10, x11, x12, x13, x14, x15 });
  ++solutions;
}
use ^= 1 << x14; }
use ^= 1 << x13; }
use ^= 1 << x12; }
use ^= 1 << x11; }
use ^= 1 << x10; }}
use ^= 1 << x09; }}
use ^= 1 << x08; }}
use ^= 1 << x07; }
use ^= 1 << x06; }}
use ^= 1 << x05; }}
use ^= 1 << x04; }}
use ^= 1 << x03; }
use ^= 1 << x02; }}
use ^= 1 << x01; }}
}

  cout << "result: " << solutions << endl;
  auto t1 = std::chrono::high_resolution_clock::now();
  cout << std::chrono::duration_cast<std::chrono::milliseconds>(t1 - t0).count() / 1000. << " sec.\n";
  return 0;
}
[/size]

アバター
purin52002
記事: 235
登録日時: 2年前
連絡を取る:

Re: [VS2015]vectorのウォッチ

#4

投稿記事 by purin52002 » 2年前

みえさん
試してみましたがどうにも違うようです、、、。
チェックを入れようが入れまいが表示が変わりませんでした。orz

Mathさん
たしかにウォッチ式を書けばよいのでしょうが、
以前はウォッチに追加するだけでvectorの中身が展開できたんですよねぇ、、、
できればそのころの状態に戻したいです。
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

アバター
沖 滉均
記事: 237
登録日時: 9年前
住所: K県F市

Re: [VS2015]vectorのウォッチ

#5

投稿記事 by 沖 滉均 » 2年前

みえさんと同様に日本語版のVisual Studio Express 2015で設定をしてみましたがこちらではvectorしっかり表示切り替わるようです。
OSによる違いということはなさそうですし、日本語版と英語版で異なるということもなさそうですね。
Release/Debugビルドで異なるかも確認してみましたが、異なることもなさそうです。
プロパティシートの設定で変わるところがありそうかどうかは未確認です。
添付ファイル
VS2015ExpJpn.png
There is no royal road to learning.
codeタグで指定できる言語
画像

アバター
purin52002
記事: 235
登録日時: 2年前
連絡を取る:

Re: [VS2015]vectorのウォッチ

#6

投稿記事 by purin52002 » 2年前

沖さん
わざわざご検証ありがとうございます。
いよいよ八方ふさがりですかね^^;
再々インストールを視野に入れ始めますorz
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

アバター
沖 滉均
記事: 237
登録日時: 9年前
住所: K県F市

Re: [VS2015]vectorのウォッチ

#7

投稿記事 by 沖 滉均 » 2年前

purin52002さん

再インストールの前に修復をやってみるのもひとつの手だと思います。
あと、バージョンそのものは違うのですが下記サイトを参考にデバッガディスプレイ用のファイルが入っているかどうかを確認してみるのも
https://blogs.msdn.microsoft.com/vcblog ... udio-2012/

私の環境はWindows 7 32-bit、Visual Studio Express 2015なのですが下記
C:\Program Files\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers\stl.natvis
にvectorのデバッグ表示の設定が入っているようでした。
There is no royal road to learning.
codeタグで指定できる言語
画像

アバター
purin52002
記事: 235
登録日時: 2年前
連絡を取る:

Re: [VS2015]vectorのウォッチ

#8

投稿記事 by purin52002 » 2年前

幸いというべきか残念というべきか、、、
stl.nativesが存在しました。
存在しているのに機能していないということは、、、(ゴクリ
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

アバター
沖 滉均
記事: 237
登録日時: 9年前
住所: K県F市

Re: [VS2015]vectorのウォッチ

#9

投稿記事 by 沖 滉均 » 2年前

後もう1点はレジストリエディタで設定がおかしくなっているケース
私の環境ではプロジェクトエクスプローラから新しい項目の追加ができなくて設定したのですが同様にVisualizersもレジストリキーに参照場所が書かれています
HKEY_CURRENT_USER\Software\Microsoft\WDExpress\14.0\Debugger\NatvisValidation
このキーの中にある値のパスが稀に別の場所を指している場合があってその場合に設定を読み込めずにデバッグ表示できないことがあるようです。
が、レジストリ変更はリスクもあるのであまりおすすめしないです。
変更する場合は復元ポイントの設定やレジストリのバックアップなどを行なってから自己責任でお願いします。
オフトピック
Visual Studioを別のフォルダに再インストールした場合などに以前の設定を見てしまい参照できなくなるらしい(あとはPreview版を過去に入れてたりしても同様の現象が起こることが…)
There is no royal road to learning.
codeタグで指定できる言語
画像

みえ
記事: 23
登録日時: 2年前

Re: [VS2015]vectorのウォッチ

#10

投稿記事 by みえ » 2年前

なかなか難しいですね。私の方でも試しに空のプロパティシートを作ってプロジェクトに追加してみましたが、問題は起きませんでした。

チェックを入れようが入れまいが表示が変わらない、というのがそもそも奇妙ですね。

沖さんが言及されているようなレジストリの問題でなければ、何かの拍子に設定ファイルへの書き込み権限が失われて、ファイルが書き換えられなくなっているのかもしれません。ただこの場合、普通は Visual Studio 終了時にエラーが出るはずです。
あと考えられるのは、もし Microsoft アカウントで設定を同期している場合に、同期が上手くいっていないとかでしょうか。同期の機能を使った経験がないので自信はありません。

ところで、この現象は新規プロジェクトを作っても常に発生しますか?もうしそうだとすると、プロジェクト依存ではないことになるので、やはり怪しいのは設定ファイルです。

私から提案するとすれば、再々インストールの前に以下の方法を試してみてはいかがでしょう。再々インストールより面倒であれば、ちゃっちゃと再々インストールするのも手だと思います。

## 1 つ目の方法
Windows に新しいユーザー アカウントを作り、そのユーザーでログオンしてから Visual Studio のウォッチ ウィンドウの表示を見てみる。
Visual Studio 2015 の設定ファイルはユーザー毎に違うので、設定ファイルがおかしいのであれば、新ユーザーで現象は起きないはずです。

## 2 つ目の方法
Visual Studio の設定を一度初期状態にリセットして現象が直るかどうかを見る。
ただし設定をリセットすると現在の設定が失われてしまうことを予めご了承ください。後で戻ってこれるように現在の設定をエクスポートしておくことはできます。

方法: 設定をリセットする
https://msdn.microsoft.com/ja-jp/librar ... .100).aspx

## 3 つ目の方法
これはファイルを直接弄るので少しリスクのある方法です。
Visual Studio 2015 の設定ファイルは以下のフォルダーに .vssettings という拡張子のファイルとして保存されているはずなので、そのファイルをリネームか移動しておいてから Visual Studio を再起動してみる。設定ファイルに問題があって Visual Studio の GUI からアクセスできないのであればこの方法が有効かもしれません。

%USERPROFILE%\Documents\Visual Studio 2015\Settings

アバター
purin52002
記事: 235
登録日時: 2年前
連絡を取る:

Re: [VS2015]vectorのウォッチ

#11

投稿記事 by purin52002 » 2年前

沖さん
レジストリをいじるのはちょっと怖いですね、、、

みえさん
3番目以外の方法を試してみたのですがだめでした。

今日の夕方ごろに修復、再インストールをしてみようと思います。
夕方までに回答、もしくは修復後もウォッチできないかもしれないのでもう少し未解決のままにしておこうと思います<(_ _)>
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

アバター
沖 滉均
記事: 237
登録日時: 9年前
住所: K県F市

Re: [VS2015]vectorのウォッチ

#12

投稿記事 by 沖 滉均 » 2年前

レジストリをいじる方法についての補足ですけども、レジストリをいじるのではなくレジストリに合わせるという手段でも可能です。
要するにレジストリに設定されているパスをエクスプローラで作成して、該当するファイルをそこにコピーする(移動してしまうとまた面倒なので)
この方法であればシステム上影響はないので少し安心かもしれません。
少なくともテンプレの方ではレジストリキーに設定されているパス名に合わせても読み込めたのでもし設定値が異なっているのであれば同様の手段で可能だと思われます。
There is no royal road to learning.
codeタグで指定できる言語
画像

Math

Re: [VS2015]vectorのウォッチ

#13

投稿記事 by Math » 2年前

もう一度設定を確認してみてください。
http://www.atmarkit.co.jp/fdotnet/chush ... 01_03.html
VS2015Communityは安定感は(他のソフトに比べ)抜群だけど....imo...(in my opinion)

Math

Re: [VS2015]vectorのウォッチ

#14

投稿記事 by Math » 2年前

”再インストールをする場合完全にアンインストールしてクリーン・インストールして下さい。”というのはいろんなソフトで見かけるから”レジストリ―”の”ゴミ”かしら。Microsoftの保証中の商品があればMicrosoftにきけばリモコンでPCに入ってレジストリを直してくれます。私は何回もやってもらってやり方を覚えましたよ。(最初に変える付近のレジストリの複製をとる..簡単にとれる..)

Math

Re: [VS2015]vectorのウォッチ

#15

投稿記事 by Math » 2年前

蛇足ですが”富士通製のPCの[Windows]の面倒はMicrosoftではみてもらえません"。富士通の社員がMicrosoftに出向して”富士通製のWindows”になっているからです。[Windows]の面倒は”富士通”です。でも富士通のかたは”レジスター”は絶対いじってくれませんよ。

Math

Re: [VS2015]vectorのウォッチ

#16

投稿記事 by Math » 2年前

[訂正]すみません。レジスターはレジストリーの誤りです。

アバター
あたっしゅ
記事: 249
登録日時: 9年前
住所: 東京23区
連絡を取る:

Re: [VS2015]vectorのウォッチ

#17

投稿記事 by あたっしゅ » 2年前

VS2017 の正式版が出たので、VS2017 使ってみるとか
手提鞄あたっしゅ、[MrAtassyu] http://ameblo.jp/mratassyu/
手提鞄屋魚有店(てさげかばんやうおありてん)
レスがついていないものを優先して、レスしています。時々、見当外れなレスをします。

Math

Re: [VS2015]vectorのウォッチ

#18

投稿記事 by Math » 2年前

え!本当!う~ん C:ドライブがきつくなったから! 使った感じを皆が出すまで待とう.....

アバター
あたっしゅ
記事: 249
登録日時: 9年前
住所: 東京23区
連絡を取る:

Re: [VS2015]vectorのウォッチ

#19

投稿記事 by あたっしゅ » 2年前

Math さんが書きました:え!本当!う~ん C:ドライブがきつくなったから! 使った感じを皆が出すまで待とう.....
早く,HDD 買っちゃいなよ。正月に、アキバで、外付け USB 接続 HDD 4TB \10,980.- で買ったよ。あとから買った USB 3.0 ボードと相性が悪かったけど...
手提鞄あたっしゅ、[MrAtassyu] http://ameblo.jp/mratassyu/
手提鞄屋魚有店(てさげかばんやうおありてん)
レスがついていないものを優先して、レスしています。時々、見当外れなレスをします。

Math

Re: [VS2015]vectorのウォッチ

#20

投稿記事 by Math » 2年前

USB外付けハードディスクはあるのですがVS2015Community,Unity5.51f1,BulletSharp,DirectX11,X9,OpenCV3.1,OpenCVSharp3.2,OpenGL,eclipseNEON,eclipseMARS,Qt
JavaFX,NetBeans,GIMP2,CodeBlocks,Bash,Ubuntu(Linux),DxLib(Windows,Andriod),CUDA(NVIDEO),PowerSell_ise,VS2008,MinGW..
が安定して動く環境を壊したくないので。VS2017のC/C++の変更はC++17が決まるまでは大きくないと思うので(C#,VBはVS2017は不要)
インストールの手前まで確認してやめました。1GBくらいのModule別インストールも可能なようですが、今安定してるので..

アバター
あたっしゅ
記事: 249
登録日時: 9年前
住所: 東京23区
連絡を取る:

Re: [VS2015]vectorのウォッチ

#21

投稿記事 by あたっしゅ » 2年前

HDD/SSD の話、別スレッド建てました。 http://dixq.net/forum/viewtopic.php?f=3&t=18933 へ移動。
手提鞄あたっしゅ、[MrAtassyu] http://ameblo.jp/mratassyu/
手提鞄屋魚有店(てさげかばんやうおありてん)
レスがついていないものを優先して、レスしています。時々、見当外れなレスをします。

アバター
purin52002
記事: 235
登録日時: 2年前
連絡を取る:

Re: [VS2015]vectorのウォッチ

#22

投稿記事 by purin52002 » 2年前

返信が遅れてしまい申し訳ありません。

たくさんの回答ありがとうございました。
せっかくたくさんの意見を出してもらっておいて申し訳ないのですが、修復をかけたら直りました-_-;
もし今度また同じような現象が起こったら、今回出た回答を参考にしたいと思います^^
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

返信

“C言語何でも質問掲示板” へ戻る