プログラムが停止するたびに変数がどのように変化するかを確認したい場合は、ポイントを変数名に移動し、ツールバーのウォッチアイコン (gud-watch) をクリックするか、C-x C-a C-w
と入力してください。プレフィックス引数を指定すれば、ミニバッファに変数名を入力できます。
各ウォッチ式はスピードバーに表示されます(スピードバーフレームを参照)。配列、構造体、共用体などの複雑なデータ型は、ツリー形式で表示されます。リーフおよび単純なデータ型では、式の名前とその値が表示され、スピードバーフレームを選択すると、型がツールチップとして表示されます。上位レベルでは、ポインタの場合は名前、型、アドレス値が表示され、それ以外の場合は名前と型のみが表示されます。ルート式では、定義されたフレームを特定しやすくするため、フレームアドレスもツールチップとして表示されます。
複雑なデータ型を展開または縮小するには、式の左側にあるタグの mouse-2 をクリックするか、SPC を押してください。式の直下の子要素の数が変数 gdb-max-children の値を超える場合、Emacs は式を展開する前に確認を求めます。
複雑なウォッチ式を削除するには、スピードバーのルート式にポイントを移動し、D (gdb-var-delete) と入力してください。
単純なデータ型の変数や、複雑なデータ型の単純な要素を編集するには、スピードバーのその位置にポイントを移動し、RET (gdb-edit-value)
と入力します。あるいは、値の mouse-2
をクリックして編集することもできます。いずれの方法でも、ミニバッファを使用して新しい値が読み込まれます。
変数 gdb-show-changed-values に nil 以外の値(デフォルト値)を設定すると、Emacs は最近変更された値のハイライトに font-lock-warning-face を、スコープ外になった変数を目立たなくするために shadow フェイスを使用します。変数がスコープ外になると、その値を編集できなくなります。
変数 gdb-delete-out-of-scope が nil 以外(デフォルト値)の場合、Emacs
はスコープ外となったウォッチ式を自動的に削除します。プログラムが同じ関数に何度も再入する場合、ウォッチ式を再作成しなくて済むよう、この値を nil に設定しておくと便利なことがあります。
変数 gdb-use-colon-colon-notation が nil 以外の場合、Emacs は ‘function::variable’
形式を使用します。これにより、ユーザーは同じ変数名を持つウォッチ式を表示できます。デフォルト値は nil です。
ウォッチ式の表示が更新されるたびにスピードバーを自動的に上げるには、gdb-speedbar-auto-raise に nil
以外を設定してください。これは、フルスクリーンの Emacs フレームでデバッグを行う場合に便利です。