Previous: Commands of GUD, Up: Debuggers


21.5.4 GUDのカスタマイズ

GUDが実行を開始すると、 GDBの場合はgdb-mode-hook、 DBXの場合はdbx-mode-hook、 SDBの場合はsdb-mode-hook、 XDBの場合はxdb-mode-hook、 Perlのデバッグモードの場合はperldb-mode-hook、 PDBの場合はpdb-mode-hook、 JDBの場合はjdb-mode-hookのフックを実行します。 これらのフックを使って、デバッガの対話バッファ用に 自前のキーバインドを定義できます。 See Hooks

以下は、特定のコマンド文字列をデバッガに送るコマンドを定義し、かつ、 そのコマンドに対するキーバインドをデバッガの対話バッファに設定する 便利な方法です。

     (gud-def function cmdstring binding docstring)

これは、デバッガプロセスにcmdstringを送る functionという名前のコマンドを定義し、 そのコマンドの説明文字列をdocstringとします。 このように定義したコマンドは、どのバッファでも使えます。 bindingnil以外の場合、 gud-defはGUDバッファのモードに対しては このコマンドをC-c bindingにバインドし、 それ以外に対してはC-x C-a bindingにバインドします。

コマンド文字列cmdstringには、 functionが呼び出されたときにデータが埋め込まれる ‘%’系列を含めることもできます。

%f
現在のソースファイルの名前。 カレントバッファがGUDバッファだった場合には、 『現在のソースファイル』とは プログラムが停止した箇所に対応するソースファイル。
%l
現在のソース行番号。 カレントバッファがGUDバッファだった場合には、 『現在のソース行番号』とは プログラムが停止した箇所に対応するソースファイルの行番号。
%e
ポイント位置あるいはポイントに隣接する Cの左辺値か関数呼び出し式。
%a
ポイント位置あるいはポイントに隣接する 箇所の16進数表記アドレス。
%p
functionを呼ぶときに指定された数引数を10進値表記したもの。 数引数なしで呼ばれた場合、‘%p’は空文字列。

cmdstringで‘%p’を使用しなければ、 定義しようとしているfunctionは数引数を無視する。