GUDインタラクションバッファは、デバッガのサブプロセスにテキストコマンドを送信し、その出力を記録するために使用されるEmacsバッファです。これはデバッガとやり取りするための基本的なインターフェースであり、M-x gud-gdbやGUDの起動に記載されているその他のコマンドで使用されます。M-x gdbコマンドは、ブレークポイントやスタックフレーム、およびデバッガ状態のその他の側面を制御するための専用バッファを追加することで、このインターフェースを拡張します(GDBグラフィカルインターフェースを参照)。
GUDインタラクションバッファではShellモードの派生版が採用されているため、Shellモードで定義されているEmacsコマンドが利用可能です(Shellモードを参照)。ほとんどのデバッガコマンドで補完が利用でき(補完を参照)、通常のShellモードの履歴コマンドを使用してそれらを繰り返すことができます。GUDインタラクションバッファで使用できる特殊なコマンドについては、GUDのコマンドを参照してください。
プログラムのデバッグを行う際、Emacsは関連するソースファイルをEmacsバッファで表示し、左フリンジの矢印で現在の実行行を示します。(テキスト端末では、矢印は左マージンに ‘=>’ と表示されます。)このようなバッファ内でポイントを移動しても、矢印は移動しません。これらのソースファイルを自由に編集できますが、行の挿入や削除を行うと矢印の位置がずれることに注意してください。Emacsには、編集したどのソース行がデバッガサブプロセスから報告された行に対応しているかを判別する手段がないためです。この情報を更新するには、通常、プログラムを再コンパイルして再起動する必要があります。
さらに、GUDでは、ウィンドウ内のテキスト自体において、現在の実行行を2通りのいずれかの方法で視覚的に区別することが可能です。1つ目は、ユーザーオプション
gud-highlight-current-line が有効な場合に機能し、その行をフェイス
gud-highlight-current-line-face
で表示されるオーバーレイに表示します。もう1つは、HL Line Mode(カーソルの表示 を参照)が有効な場合に機能し、HL Line Mode
によって導入されたオーバーレイを一時的に実行行まで移動させ、その後の編集コマンドによって再びカーソルの下に配置されるまで保持します。
GUD Tooltipモードは、GUDにツールチップ機能を追加するグローバルマイナーモードです。このモードを切り替えるには、M-x
gud-tooltip-modeと入力してください。デフォルトでは無効になっています。有効にすると、変数、関数、またはマクロ(総称して識別子と呼びます)の上にマウスポインタを移動させることで、ツールチップにその値を表示できます(ツールチップを参照)。式の上にマウスポインタを置いただけでは、意図していた式の値が表示されない場合、式の上でマウスをドラッグし、マークされた領域内にマウスを留めておくことで、どの式を評価するかをEmacsにより明示的に指示できます。GUD
Tooltipモードは、GUDインタラクションバッファ、および変数gud-tooltip-modesにメジャーモードが指定されているすべてのソースバッファで有効になります。ツールチップモードを無効にした場合、値はツールチップではなくエコーエリアに表示されます。
GUD TooltipモードをM-x
gud-gdbと併用する場合、GDBで式の値を表示するとマクロが展開されることがあり、デバッグ対象のプログラムに副作用が生じる可能性があります。そのため、gud-gdbではツールチップの使用が無効になっています。M-x
gdbインターフェースを使用すれば、副作用を回避するための専用コードが実装されているため、この問題は発生しません。さらに、プログラムが実行されていない状態で、識別子に関連付けられたマクロ定義を表示することも可能です。