2010-07-05 117 views
160

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

+1

注意:'.gdbinit'文件必须被别人写保护,而不是你在linux上。 – urzeit 2013-07-03 08:47:18

+0

@urzeit - 我认为这是Ubuntu发行版失败的原因。他们默认允许任何人进入其他人的主目录。 – jww 2016-07-30 17:47:21

+0

@jww如果权限设置不正确,则无法处理'.gdbinit'文件,无论默认设置是什么或系统使用的主目录有什么其他限制。 – urzeit 2016-08-02 05:18:21

回答

225

简短的回答: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 
+4

刚刚为自己找到了这件事,并认为我会分享它。 – Frank 2010-07-05 01:21:53

+3

对于下一次,创建非社区wiki这样的自我回答问题是完全合法的。 :) – 2010-07-05 01:46:32

+0

@Frank如果我输入'n'然后向上箭头键,我会得到所有以'n'开头的命令。 – SIFE 2013-01-27 00:09:42

6

如果您仍遇到问题,请确保您的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. 

docs

集历史尺寸大小
集历史大小无限制
一套GDB保持在历史列表命令的数量。默认值为环境变量HISTSIZE的值,如果未设置此变量,则为256。如果大小没有限制,GDB在历史列表中保留的命令数量是无限的。

+0

我有同样的问题。尽管在.gdbinit文件中放置了“设置历史记录大小100”,但HISTSIZE环境变量仍然导致历史记录大小设置为零。 问题是gdb不明白[HISTSIZE可以设置为无限制](http://stackoverflow.com/questions/9457233/unlimited-bash-history) – DavidW 2015-11-17 13:06:56

+0

gdb中的HISTSIZE bug已经[固定为2015年6月](https://sourceware.org/bugzilla/show_bug.cgi?id=16999),而不是您的系统中可能存在此更改。与此同时,如果设置了'HISTSIZE',则它必须> 0,否则gdb将禁用历史记录。 – 2016-02-26 18:33:44