次: , 前: Editing, 上: Controlling GDB


14.3 コマンド・ヒストリ

デバッグ・セッション中にユーザが入力したコマンドをGDBに記録させることができるため、 ユーザは実際に何が実行されたかを確実に知ることができます。 以下のコマンドを使って、 GDBのコマンド・ヒストリ機能を管理します。

set history filename fname
GDBコマンド・ヒストリ・ファイルの名前をfnameに設定します。 GDBは、 最初にこのファイルからコマンド・ヒストリ・リストの初期値を読み込み、 終了時には、 このファイルにセッション中のコマンド・ヒストリを書き込みます。 コマンド・ヒストリ・リストには、 ヒストリ展開機能、 あるいは、 後に列挙するヒストリ・コマンド編集文字によってアクセスすることができます。 このファイル名は、 デフォルトでは環境変数GDBHISTFILEの値になりますが、 この変数が設定されていない場合には./.gdb_historyになります。


set history save
set history save on
コマンド・ヒストリをファイルの中に記録します。 ファイルの名前はset history filenameコマンドで指定可能です。 デフォルトでは、 このオプションは使用不可の状態になっています。
set history save off
コマンド・ヒストリをファイルの中に記録するのを停止します。


set history size size
GDBがヒストリ・リストの中に記録するコマンドの数を設定します。 デフォルトでは、 この値は環境変数HISTSIZEの値に設定されますが、 この変数が設定されていない場合は256になります。

ヒストリ展開機能により、 文字!には特別な意味が割り当てられます。

!は、 C言語における論理notの演算子でもあるので、 ヒストリ展開機能はデフォルトではoffになっています。 set history expansion onコマンドによってヒストリ展開を利用できるようにした場合には、 (!を式の中で論理notとして使うのであれば) !の後ろに空白かタブを入れることによって、 それが展開されないようにする必要のある場合があります。 ヒストリ展開が有効になっている場合でも、 readlineのヒストリ機能は、 !=!(という文字列を置き換えようとはしません。

ヒストリ展開を制御するコマンドには、 以下のようなものがあります。

set history expansion on
set history expansion
ヒストリ展開を使用可能にします。 ヒストリ展開はデフォルトでは使用不可です。
set history expansion off
ヒストリ展開を使用不可にします。

readlineのコードには、 ヒストリ編集機能やヒストリ展開機能に関する、 より完全なドキュメントが付属しています。 gnu Emacsやviのことをよく知らない人は、 このドキュメントを読むとよいでしょう。


show history
show history filename
show history save
show history size
show history expansion
これらのコマンドは、 GDBのヒストリ・パラメータの状態を表示します。 単にshow historyを実行すると、 4つのパラメータの状態がすべて表示されます。
show commands
コマンド・ヒストリ中の最後の10個のコマンドを表示します。
show commands n
コマンド番号nのコマンドを中心に、 その前後の10個のコマンドを表示します。
show commands +
最後に表示されたコマンドに続く10個のコマンドを表示します。