27

C++ に配列があるとします。

double* velocity = new double[100];

GDB コマンド ラインを使用して、次のコマンドでこの配列を表示できます。

> print *velocity @ 100

そして、配列内のすべての double 値のきれいにフォーマットされたリストを出力します。

ただし、Xcode デバッガーを使用する場合、ほとんどの場合、これを単一の double 値へのポインターとして扱い、変数リストに速度 [0] を表示します。

これにより、動的に割り当てられた大きな配列を含むプログラムをデバッグするのは本当に PITA になります。Xcodeに「これは長さ100の配列へのポインタです」と伝え、そのように表示させる方法が必要です。誰がそれが何であるか知っていますか?

4

4 に答える 4

37

私の答えは古いものに良い追加になると思います。

Xcode の新しいバージョンではlldb、デフォルトのツールとしてデバッガーが使用されますgdb

このページによると:

Xcode 5 のリリースにより、LLDB デバッガーは OS X でのデバッグ エクスペリエンスの基盤となります。

したがって、バージョン 5 以降の Xcode では、次のlldbコマンドを使用します。

メモリ読み取り -t int -c8 `array_name`

-
8配列の要素数
array_name- 配列の名前 - 配列
intの型

このコマンドの実行結果は次のようになります。

(lldb) メモリ読み取り -t int -c8array
(整数) 0x7fff5fbff870 = 7
(整数) 0x7fff5fbff874 = 6
(整数) 0x7fff5fbff878 = 9
(整数) 0x7fff5fbff87c = 10
(整数) 0x7fff5fbff880 = 1
(整数) 0x7fff5fbff884 = 8
(整数) 0x7fff5fbff888 = 4
(整数) 0x7fff5fbff88c = 3

于 2014-05-01T02:15:42.367 に答える
-2

残念ながら、GUI は限られているため、GDB マジックを適切に組み合わせて作業を行う必要があります。

于 2009-01-27T20:13:05.227 に答える