如何让gdb保存命令历史记录?

时间:2010-07-05 01:20:26

标签: debugging gdb

如何设置gdb以便保存命令历史记录?在开始新的gdb会话时,我想使用向上箭头键来访问先前会话的命令。

2 个答案:

答案 0 :(得分:256)

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


答案很长:

GDB manual, 22.3 Command History涵盖了命令历史记录。创建文件$HOME/.gdbinit,将其权限更改为0600,然后添加以下内容:

set history save on

您可以使用以下内容设置保存的过去命令的数量。该命令被描述为“设置gdb在其历史列表中保留的命令数。默认为环境变量GDBHISTSIZE的值,如果未设置此变量,则默认为256. GDBHISTSIZE的非数字值是如果size是无限制的,或者如果GDBHISTSIZE是负数或空字符串,那么gdb在历史列表中保留的命令数是无限的“

set history size <size>

相关命令为set history remove-duplicates <count>。该命令被描述为“控制命令历史记录列表中的重复历史记录条目的删除。如果count不为零,gdb将回顾最后的计数历史记录条目并删除第一个重复的条目当前条目被添加到命令历史列表。如果count是无限制的,则此lookbehind是无限的。如果count为0,则禁用删除重复的历史条目“

set history remove-duplicates <count>

默认情况下,gdb会将历史记录保存到文件./.gdb_history in the current directory中。如果您希望命令历史记录不依赖于您所在的目录,还包括:

set history filename ~/.gdb_history

答案 1 :(得分:7)

如果您仍然遇到问题,请确保您的HISTSIZE环境变量数字合适。我的空是空的,导致了gdb的历史规模&#34;设置为默认值为0.

export HISTSIZE=100000000

到我的〜/ .bashrc,一切都是膨胀的

您可以通过执行(在gdb内部)&#34;显示历史记录&#34;来检查您的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

  

设置历史记录尺寸尺寸
  设置无限制历史记录
  设置GDB在其历史列表中保留的命令数。默认为环境变量HISTSIZE的值,如果未设置此变量,则默认为256。如果大小不受限制,则GDB在历史列表中保留的命令数量不受限制。