2009-10-30 20 views
11

は、次の例を考えてみましょう:gdbを使ってC++の動的配列を "監視"する方法は?

int size = 10, *kk = new int[size]; 

for (int i = 0; i < size; i++) { 
    kk[i] = i; 
} 

delete [] kk; 

私は、アレイ全体のための時計を追加することができますどのように?私は1つずつ時計を追加することができます(kk [0]kk [1] ...)ですが、私は配列の長さを知っているので、自動的にそれを行う方法はありますか?私はkk [0..size-1]程度のものを意味します。

私はcygwin g ++とgdbとともにNetBeans IDEを使用しています。

+1

雇用ロシアの編集は質問の意味を少し変更しますが、式の@は表示コマンドと印刷コマンドの両方で機能します。 – mkb

+0

GDBが停止するたびにそれを見たり(読み書きする)、印刷しますか? –

+0

アレイ全体を見る(ブレーク):http://stackoverflow.com/questions/11004374/watch-a-memory-range-in-gdb –

答えて

11

は、印刷コマンドのドキュメントからdisplay *[email protected]<size>をお試しください:

@は配列としてメモリ内のどこにでも オブジェクトの連続したデータを処理するための二項演算子です。 FOO @ NUMは、最初の 要素がFOOであり、2番目の要素がFOOが格納されている の後のスペースに格納されている配列を返します。FOOは、値 がメモリにある式でなければなりません。

+0

ニース!これは私が望んだものです:)。 http://bit.ly/4yYT4V – Keiji

+0

"display"の代わりにpを使う方が好きです。私は別の答えとしてここに追加しました。 – PlagueHammer

+1

"print"と "display"は同じコマンドではありません。 "display"は変数をウォッチに設定します。プロンプトが表示されるたびに、変数がスコープ内にあるとみなして表示します。 – mkb

関連する問題