
同様の問題についてたくさん検索しましたが、何も見つかりませんでした。gdb を実行しているときに、前のコマンドをたどるために上矢印を使用できませんでした。上矢印と下矢印は単に無視されます。いくつかの設定を変更した後にこの動作を観察し始めましたが、正確にどの設定が変更されたかは覚えていません。
ファイルがなく~/.xinputrc
、$TERM
に設定されていますxterm
。
答え1
履歴サイズが 0 であることが原因である可能性があります。
gdb 履歴サイズを確認できます:
(gdb) show history size
The size of the command history is 0.
(gdb)
もし、履歴の最大サイズは0です、 それから上矢印履歴を保存できないため、もちろん機能しません。
私が見つけた主な理由は、bash環境変数HISTSIZEが0または空であることです。ヒストサイズ=(空の値~/.bashrcにbashの履歴を保存すると、無制限のエントリー、 しかし副作用は、gdbが$HISTSIZEを参照し、gdb履歴サイズを0に設定することです。gdb の起動時に。
だから、ヒストサイズ=10000000~/.bashrc に上矢印を追加すると、上矢印が機能するはずです (警告: ~/.bash_historyをバックアップするHISTSIZE を試してみる前に):
(gdb) show history size
The size of the command history is 10000000.
(gdb)
保持し続ける場合はヒストサイズ=~/.bashrc が空の場合、オプションは ~/.bashrc にこの関数を作成します:
gdb() ( HISTSIZE=70000000; /usr/bin/gdb "$@"; )
. ~/.bashrc再読み込みすると、次のように変更されました:
(gdb) show history size
The size of the command history is 70000000.
(gdb)
gdb を終了した後、元の $HISTSIZE は上書きされません (つまり、無制限として空のままになります)。これは、gdb 関数がサブシェル (つまり、括弧で囲まれた gdb() (...)) を使用するためです。
$ echo $HISTSIZE
$
また、終了時に履歴をオンにして、履歴ファイルをどこに保存するかを考える必要があります。以下は私の ~/.gdbinit ファイルです。まだ存在しない場合は作成してください。
$ cat ~/.gdbinit
set environment HISTSIZE 10000000
set history filename ~/.gdb_history
set history save on
set history size 10000000
set history expansion on
show history
$
なぜかと疑問に思うかもしれない環境HISTSIZEを10000000に設定する動作しませんか?ページに示されているように、プログラムにのみ影響し、gdb自体には影響しないためです。http://www.delorie.com/gnu/docs/gdb/gdb_20.html:
環境変数 varname を value に設定します。値はプログラムに対してのみ変更され、GDB 自体には影響しません。
パッチは現在利用可能です。https://sourceware.org/bugzilla/show_bug.cgi?id=16999:
2015-06-17 18:14:09 UTC:
... このパッチにより、無効な GDBHISTSIZE の動作が、bash が HISTSIZE を処理する方法と一致するようになります。GDBHISTSIZE が null または範囲外 ([0, INT_MAX] の範囲外) になった場合、履歴サイズが 0 ではなく無制限に設定されます。数値以外の GDBHISTSIZE になった場合は、何も行われません。
2015-06-17 18:30:10 UTC:
GDB の次のバージョンでは、HISTSIZE をまったく読み取らなくなります。HISTSIZE を読み取れば、解決するよりも多くの問題が発生するためです。代わりに、同じ目的で GDBHISTSIZE が読み取られます。また、念のため、GDBHISTSIZE の動作は bash が HISTSIZE を読み取る方法と一致するため、GDBHISTSIZE を -1 に設定すると、GDB の履歴サイズは無制限になります。