2010-07-05 116 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