我怎样才能让gdb保存命令的历史logging?

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

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


很长的回答:

命令历史logging在GDB手册22.3命令历史中 。 创build一个文件$HOME/.gdbinit ,将其权限更改为0600 ,并添加以下内容:

 set history save on 

您可以使用以下命令设置保存的过去命令的数量。 该命令被描述为“设置gdb保存在其历史列表中的命令的数量,缺省值为环境variablesGDBHISTSIZE的值,如果没有设置该variables,则将其设置为256.忽略GDBHISTSIZE的非数字值。大小是无限的,或者如果GDBHISTSIZE是负数或空string,那么gdb在历史列表中保留的命令的数量是无限的

 set history size <size> 

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

 set history remove-duplicates <count> 

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

 set history filename ~/.gdb_history 

如果仍然有问题,请确保您的HISTSIZE环境variables是一个适当的高数字。 矿是空的,导致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. 

从文档 :

设置历史大小大小
设置历史大小无限
设置GDB在其历史列表中保存的命令的数量。 这个缺省值是环境variablesHISTSIZE的值,如果没有设置这个variables,则为256。 如果大小是无限的,那么GDB在历史列表中保留的命令的数量是无限的。