Next: , Previous: Data, Up: Data


8.1 式

printコマンド、 および、 ほかの多くのGDBコマンドは、 式を受け取って、 その値を評価します。 ユーザの使用しているプログラミング言語によって定義されている定数、 変数、 演算子は、 いずれもGDBにおける式の中で有効です。 これには、 条件式、 関数呼び出し、 キャスト、 文字列定数が含まれます。 しかし、 プリプロセッサの#defineコマンドによって定義されるシンボルは、 残念ながら含まれません。

現在のGDBは、 ユーザの入力する式において配列定数をサポートします。 その構文は、 {element, element...}です。 例えば、 コマンドprint {1, 2, 3}を使用して、 ターゲット・プログラム内でmalloc()によって獲得されたメモリ内に配列を作成することができます。

C言語は大変広汎に使用されているので、 このマニュアルの中で示される例の中の式はC言語で記述されています。 他の言語での式の使い方に関する情報については、 See Using GDB with Different Languages

この節では、 プログラミング言語によらずGDBの式で使用できる演算子を説明します。

キャストは、 C言語のみならず、 すべての言語でサポートされています。 これは、 メモリ内のあるアドレスにある構造体を調べるのに、 数値をポインタにキャストするのが大変便利であるからです。

プログラミング言語によらず共通に使用可能な演算子に加えて、 GDBは以下の演算子をサポートしています。

@
@’は、 メモリの一部を配列として処理するための2項演算子です。 詳細については、 See Artificial arrays
::
::’によって、 それを定義している関数またはファイルを特定して、 変数を指定することができます。 See Program variables


{type} addr
addrで示されるメモリ上のアドレスに格納されている、 typeで示される型のオブジェクトを参照します。 addrには、 評価結果が整数値またはポインタになるような任意の式を指定することができます (ただし、 2項演算子の前後には、 キャストを使う場合と同様の括弧が必要です)。 これは、 addrの位置に通常存在するデータの型がいかなるものであろうとも、 使用することができます。