変数gdb-many-windows
がnil
(デフォルト)の場合、M-x gdbは通常GUD
interactionバッファーだけを表示します。しかしgdb-show-main
が非nil
の場合、2つのウィンドウで開始します。その場合、1つはGUD
interactionバッファーを表示して、もう一方はデバッグするプログラムのmain
関数のソースを表示します。
gdb-many-windows
が非nil
の場合、M-x gdbは以下のフレームレイアウトを表示します。
+--------------------------------+--------------------------------+ | GUD interaction buffer | Locals/Registers buffer | |--------------------------------+--------------------------------+ | Primary Source buffer | I/O buffer for debugged pgm | |--------------------------------+--------------------------------+ | Stack buffer | Breakpoints/Threads buffer | +--------------------------------+--------------------------------+
上のいずれかにもとづきウィンドウレイアウトをカスタマイズして、gdb-save-window-configuration
を使用してそのレイアウトをファイルに保存できます。そのレイアウトは後からgdb-load-window-configuration
を使用してロードすることで戻すことができます(内部的にはEmacsはウィンドウレイアウトのかわりにウィンドウ構成という用語を使用する)。gdb-default-window-configuration-file
をカスタマイズすることで、gdb-many-windows
が使用するデフォルトレイアウトにカスタムレイアウトをセットできます。これが絶対ファイル名でなければ、GDBはgdb-window-configuration-directory
の配下でファイルを探します。gdb-window-configuration-directory
のデフォルトはuser-emacs-directory
です(Emacsがinitファイルを探す方法を参照)。
ウィンドウのレイアウトを変更した場合には、M-x gdb-restore-windowsとタイプして、デフォルトのレイアウトをリストアできます。複数ウィンドウレイアウトと、GUD interactionバッファーとソースファイルだけの単純なレイアウトを切り替えるには、M-x gdb-many-windowsとタイプしてください。
ウィンドウを複雑にセットアップをしていて、gdb-many-windows
がそれを混乱させるのを望まない場合は、別のフレーム内でM-x
gdbを呼び出すほうがよいでしょう。その場合は、元のフレームのウィンドウのアレンジに影響はありません。テキスト端末で作業する場合は、GDBセッションに別のフレームを使用すれば、各ウィンドウにたいするスクリーン資源がもっとも活用される可能性があるので、特に便利になり得ます。同一フレーム上でのGDB開始を選択する場合には、gdb-restore-window-configuration-after-quit
を非nil
にセットすることを考慮してください。その場合には、GDBのquit後に元のレイアウトがリストアされるでしょう。t
なら常にリストア、if-gdb-many-windows
ならgdb-many-windows
が非nil
のときだけリストア、if-gdb-show-main
ならgdb-show-main
が非nil
のときだけリストアされます。
同じフレームまたは異なるフレームに、GDBに関連した追加のバッファーを表示するように指定できます。M-x gdb-display-buffertype-bufferまたはM-x gdb-frame-buffertype-bufferとタイプして、望むバッファーを選択します。ここでbuffertypeは‘breakpoints’や‘io’のような、該当するバッファータイプです。‘GUD’メニューの、サブメニュー‘GDB-Windows’または‘GDB-Frames’により、メニューバーから同じことができます。
デフォルトではGDBはソースファイルを表示するために最大で1つのウィンドウを使用します。gdb-max-source-window-count
をカスタマイズして、より多くのウィンドウを使用することができます。gdb-display-source-buffer-action
をカスタマイズして、GDBがソースファイルを表示する方法を制御することもできます。
デバッグを終えたらC-x kでGUD interactionバッファーをkillすれば、このセッションでの関連するすべてのバッファーをkillできます。しかしEmacsでソースコードの編集とリコンパイル終えて、さらにデバッグを続けたいときは、これを行う必要はありません。実行を再開すると、GDBは自動的に新しい実行ファイルを見つけます。GUD interactionバッファーを残しておけば、シェルヒストリー、同様にGDBブレークポイントを残すことができる利点があります。最近編集したソースファイルのブレークポイントが、正しい場所にあるかチェックする必要があります。