web-dev-qa-db-ja.com

gdbにコマンド履歴を保存させるにはどうすればよいですか?

コマンド履歴を保存するようにgdbを設定するにはどうすればよいですか?新しいgdbセッションを開始するときに、上矢印キーを使用して前のセッションのコマンドにアクセスしたいと思います。

182
Frank

短い答え:echo 'set history save on' >> ~/.gdbinit && chmod 600 ~/.gdbinit


長い答え:

コマンド履歴は GDBマニュアル、22.3コマンド履歴 で説明されています。ファイル$HOME/.gdbinitを作成し、その許可を0600に変更し、次のコンテンツを追加します。

set history save on

保存した過去のコマンドの数は次のように設定できます。コマンドはと記述されます。gdbが履歴リストに保持するコマンドの数を設定します。デフォルトは環境変数GDBHISTSIZEの値、またはこの変数が設定されていない場合は256です。 GDBHISTSIZEの数値は無視されます。サイズが無制限の場合、またはGDBHISTSIZEが負の数または空の文字列の場合、gdbが履歴リストに保持するコマンドの数は無制限です

set history size <size>

関連するコマンドはset history remove-duplicates <count>です。コマンドはとして記述されます。 "コマンド履歴リスト内の重複する履歴エントリの削除を制御します。カウントがゼロ以外の場合、gdbは最後のカウント履歴エントリを振り返り、最初のエントリを削除しますこれは、コマンド履歴リストに追加される現在のエントリの複製です。カウントが無制限の場合、この後読みは無制限です。カウントが0の場合、重複する履歴エントリの削除は無効になります。.

set history remove-duplicates <count>

デフォルトでは、gdbは履歴をファイル./.gdb_history 現在のディレクトリ内 に保存します。コマンド履歴を現在のディレクトリに依存しないようにする場合は、次も含めます。

set history filename ~/.gdb_history
260
Frank

それでも問題が解決しない場合は、HISTSIZE環境変数が適切な数値であることを確認してください。私のものは空だったので、gdbの「履歴サイズ」設定はデフォルトで0になりました。

追加しました

export HISTSIZE=100000000

私の〜/ .bashrcにすべてが盛り上がっている

「gdb内」で「show history」を実行すると、gdbの履歴設定を確認できます。

gdb$ show history
expansion:  History expansion on command input is off.
filename:  The filename in which to record the command history is "/home/xiao/.gdb_history".
save:  Saving of the history record on exit is on.
size:  The size of the command history is 100000000.

docs から:

履歴サイズの設定size
無制限の履歴サイズの設定
GDBが履歴リストに保持するコマンドの数を設定します。デフォルトは、環境変数HISTSIZEの値、またはこの変数が設定されていない場合は256です。サイズが無制限の場合、GDBが履歴リストに保持するコマンドの数は無制限です。

7
Xiao