如何设置gdb
以便保存命令历史记录?在开始新的gdb
会话时,我想使用向上箭头键访问先前会话的命令。
.gdbinit
如果权限设置不正确,则系统将不处理该文件,无论它是默认值还是对主目录的其他限制。
.gdbinit
文件不是这种情况,则意味着您umask
未将设置为合理的值,例如022
。然后,在多用户系统中,您将面临的不仅仅是.gdbinit
文件问题。
如何设置gdb
以便保存命令历史记录?在开始新的gdb
会话时,我想使用向上箭头键访问先前会话的命令。
.gdbinit
如果权限设置不正确,则系统将不处理该文件,无论它是默认值还是对主目录的其他限制。
.gdbinit
文件不是这种情况,则意味着您umask
未将设置为合理的值,例如022
。然后,在多用户系统中,您将面临的不仅仅是.gdbinit
文件问题。
Answers:
简短答案: 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>
。该命令被描述为“控制删除命令历史记录列表中重复的历史记录条目。如果count不为零,则gdb将回溯最后一个计数历史记录条目,并删除与当前条目重复的第一个条目。 “添加到命令历史记录列表中。如果count是无限的,则此后向无界。如果count为0,则禁止删除重复的历史记录条目”。
set history remove-duplicates <count>
默认情况下,gdb将历史记录保存到当前目录中的文件./.gdb_history 中。如果您希望命令历史记录不取决于您所在的目录,则还包括:
set history filename ~/.gdb_history
n
然后按向上键,我会得到所有以n
。开头的命令。
如果仍然遇到问题,请确保您的HISTSIZE环境变量是一个适当的高数字。矿山是空的,导致gdb的“历史记录大小”设置默认为0。
添加
export HISTSIZE=100000000
到我的〜/ .bashrc,一切都膨胀了
您可以通过在gdb内部执行“显示历史记录”来检查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.
从文档:
设置历史记录大小大小
设置历史记录大小无限制
设置GDB在其历史记录列表中保留的命令数。默认为环境变量HISTSIZE的值,如果未设置此变量,则默认为256。如果大小不受限制,则GDB在历史记录列表中保留的命令数不受限制。
set history size 100
了.gdbinit文件,但是HISTSIZE环境变量仍然导致历史记录大小设置为零。问题是gdb无法理解HISTSIZE可以设置为无限制
.gdbinit
文件必须由Linux以外的其他人进行写保护。