静的に割り当てられた配列がある場合、Visual Studio デバッガーはすべての配列要素を簡単に表示できます。ただし、配列が動的に割り当てられ、ポインターによってポイントされている場合、+ をクリックして展開すると、配列の最初の要素のみが表示されます。デバッガーに伝える簡単な方法はありますか?このデータを Foo 型とサイズ X の配列として表示しますか?
9 に答える
はい、簡単です。あなたが持っていると言う
char *a = new char[10];
デバッガーでの書き込み:
a,10
配列であるかのようにコンテンツを表示します。
ウォッチ ウィンドウで、配列の名前の後にコンマを追加し、表示するアイテムの数を追加します。
再訪:
以下のポインターがあるとします。
double ** a; // assume 5*10
次に、Visual Studio デバッグ ウォッチで以下を記述できます。
(double(*)[10]) a[0],5
以下のような配列にキャストされ、すべてのコンテンツを一度に表示できます。
double[5][10] a;
為に、
int **a; //row x col
これを追加して見る
(int(**)[col])a,row
これを行うさらに別の方法がMSDNで指定されています。
つまり、文字配列をいくつかのタイプの文字列として表示できます。次のように宣言された配列がある場合:
char *a = new char[10];
次のようにして、ウォッチ ウィンドウに Unicode 文字列として出力できます。
a,su
かなりの数があるため、考えられるさまざまな変換のすべてについては、MSDN ページの表を参照してください。多くの異なる文字列バリアント、配列内の個々のアイテムを出力するバリアントなど。
ドキュメントのこの宝石のウォッチ ウィンドウで変数を使用して実行できる多くのことのリストを見つけることができます: https://msdn.microsoft.com/en-us/library/75w45ekt.aspx
変数 a については、次のような他の回答ですでに言及されていることがあります
a,10
a,su
しかし、次のように、フォーマットとサイズの指定子が他にもたくさんあります。
a,en (shows an enum value by name instead of the number)
a,mb (to show 1 line of 'memory' view right there in the watch window)
ヒント #4 の次のリンクに続く MFC 配列 (CArray、CStringArray、...) の場合
http://www.codeproject.com/Articles/469416/10-More-Visual-Studio-Debugging-Tips-for-Native-De
たとえば、「CArray pArray」の場合、ウォッチ ウィンドウに追加します。
pArray.m_pData,5
最初の 5 つの要素を表示します。
pArray が 2 次元の CArray の場合、次の構文を使用して 2 番目の次元の任意の要素を調べることができます。
pArray.m_pData[x].m_pData,y
これを多次元配列で使用する方法が見つかりませんでした。ただし、少なくとも (目的のエントリのインデックスがわかっている場合) 特定の値にウォッチを追加することはできます。インデックス演算子を使用するだけです。
Attribs という名前の配列が内部にあり、Attrib という名前の配列が内部にある current という名前の配列の場合、位置を 26 にする必要がある場合は、次のようになります。
((*((*current).Attribs)).Attrib)[26]
オフセットを使用することもできます
((*((*current).Attribs)).Attrib)+25
「次」の 25 個の要素が表示されます。(私は VS2008 を使用しています。これは最大 25 要素のみを示しています)。