ある変数の値を変更するには、 代入式を評価します。 See Expressions。 例えば、
print x=4
は、
変数x
に値4を格納してから、
その代入式の値
(すなわち4)
を表示します。
サポートされている言語の演算子の詳細情報については、
See Using GDB with Different Languages。
代入の結果を表示させることに関心がなければ、
print
コマンドの代わりにset
コマンドを使用してください。
実際のところset
コマンドは、
式の値が表示もされず、
値ヒストリ
(see Value history)
にも入らないということを除けば、
print
コマンドと同等です。
式は、
その結果の入手だけを目的として評価されます。
set
コマンドの引数となる文字列の先頭の部分が、
set
コマンドのサブ・コマンドの名前と一致してしまうような場合には、
ただのset
コマンドではなくset variable
コマンドを使用してください。
このコマンドは、
サブ・コマンドを持たないという点を除けば、
set
コマンドと同等です。
例えば、
ユーザ・プログラムにwidth
という変数がある場合、
`set width=13'によってこの変数に値を設定しようとするとエラーになります。
これは、
GDBがset width
というコマンドを持っているためです。
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
ここで不正な表現となっているのは、
もちろん`=47'の部分です。
プログラム内の変数width
に値を設定するには、
以下のようにしてください。
(gdb) set var width=47
GDBは、 代入時の暗黙の型変換をC言語よりも多くサポートしています。 整数値を自由にポインタ型変数に格納できますし、 その逆もできます。 また、 任意の構造体を、 同じサイズの別の構造体、 または、 より小さいサイズの別の構造体に変換することができます。
メモリ上の任意の箇所に値を格納するには、
指定されたアドレスにおいて指定された型の値を生成するために、
`{...}'を使用します
(see Expressions)。
例えば{int}0x83040
は、
メモリ・アドレス0x83040
を整数値として参照します
(メモリ上における、
ある特定のサイズと表現を示唆しています)。
また、
set {int}0x83040 = 4
は、 そのメモリ・アドレスに値4を格納します。