Jak skonfigurować, gdbaby zapisywała historię poleceń? Podczas rozpoczynania nowej gdbsesji chciałbym użyć klawiszy strzałek w górę, aby uzyskać dostęp do poleceń poprzednich sesji.
Uwaga: .gdbinitplik musi być chroniony przed zapisem przez osoby inne niż ty w systemie Linux.
urzeit
@urzeit - Myślę, że to stracona przyczyna na dystrybucjach takich jak Ubuntu. Domyślnie umożliwiają każdemu dostęp do katalogu domowego innej osoby.
jww
@jww .gdbinitPlik nie jest przetwarzany, jeśli uprawnienia nie są ustawione poprawnie, bez względu na to, jakie są domyślne lub jakie inne ograniczenia katalogów domowych są używane przez system.
urzeit
@urzeit Jeśli utworzysz .gdbinitplik, ale tak nie jest, oznacza to, że nie masz umaskustawionej rozsądnej wartości, takiej jak 022. W systemie z wieloma użytkownikami masz większe problemy niż sam .gdbinitplik.
Kaz
Odpowiedzi:
283
Krótka odpowiedź: echo 'set history save on' >> ~/.gdbinit && chmod 600 ~/.gdbinit
Możesz ustawić liczbę wcześniejszych poleceń zapisanych za pomocą następujących. Polecenie jest opisane jako „Ustaw liczbę poleceń przechowywanych przez gdb na liście historii. Wartość domyślna to wartość zmiennej środowiskowej GDBHISTSIZE lub 256, jeśli ta zmienna nie jest ustawiona. Wartości nienumeryczne GDBHISTSIZE są ignorowane. Jeśli rozmiar jest nieograniczony lub jeśli GDBHISTSIZE jest liczbą ujemną lub pustym łańcuchem, liczba poleceń przechowywanych przez gdb na liście historii jest nieograniczona " .
set history size <size>
Powiązane polecenie to set history remove-duplicates <count>. Polecenie jest opisane jako „Kontroluj usuwanie zduplikowanych wpisów historii na liście historii poleceń. Jeśli liczba jest różna od zera, gdb spojrzy wstecz na ostatnie wpisy historii liczenia i usunie pierwszy wpis będący duplikatem bieżącego wpisu będącego dodane do listy historii poleceń. Jeśli liczba jest nieograniczona, to ten wygląd jest nieograniczony. Jeśli liczba jest równa 0, usuwanie zduplikowanych wpisów historii jest wyłączone " .
set history remove-duplicates <count>
Domyślnie gdb zapisuje historię w pliku ./.gdb_history w bieżącym katalogu . Jeśli chcesz, aby historia poleceń nie zależała od katalogu, w którym się znajdujesz, dołącz także:
Właśnie to odkryłem i pomyślałem, że podzielę się tym na SO.
Frank
3
Następnym razem całkowicie uzasadnione jest tworzenie takich pytań, na które nie udzielono odpowiedzi w społeczności wiki. :)
Greg Hewgill
@Frank Jak o tym, czy wpisuję npotem klawisz strzałki w górę, mam wszystkie poprzednie polecenia, które zaczynają n.
SIFE
W GDB 8.0.1 wydaje się, że działa bez specjalnych uprawnień do plików.
Ryan1729,
7
Jeśli nadal masz problemy, upewnij się, że zmienna środowiskowa HISTSIZE ma odpowiednio wysoką liczbę. Mój był pusty, co spowodowało ustawienie domyślnego rozmiaru historii gdb na 0.
Dodany
export HISTSIZE=100000000
do mojego ~ / .bashrc i wszystko puchnie
Możesz sprawdzić ustawienia historii gdb, wykonując (wewnątrz gdb) „pokaż historię”:
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.
ustaw historię rozmiar rozmiar ustaw historię rozmiar nieograniczony
Ustaw liczbę poleceń, które GDB przechowuje na swojej liście historii. Domyślnie jest to wartość zmiennej środowiskowej HISTSIZE lub 256, jeśli ta zmienna nie jest ustawiona. Jeśli rozmiar jest nieograniczony, liczba poleceń przechowywanych przez GDB na liście historii jest nieograniczona.
Miałem ten sam problem. Pomimo wstawienia set history size 100pliku .gdbinit zmienna środowiskowa HISTSIZE wciąż powodowała ustawienie wielkości historii na zero. Problem polega na tym, że gdb nie rozumie, że HISTSIZE można ustawić na nieograniczony
DavidW
Błąd HISTSIZE w gdb został naprawiony w czerwcu 2015 r. Nie chodzi o to, że zmiana ta prawdopodobnie będzie jeszcze obecna w twoim systemie. W międzyczasie, jeśli HISTSIZEjest ustawiony, musi wynosić> 0, inaczej gdb wyłączy historię.
.gdbinit
plik musi być chroniony przed zapisem przez osoby inne niż ty w systemie Linux..gdbinit
Plik nie jest przetwarzany, jeśli uprawnienia nie są ustawione poprawnie, bez względu na to, jakie są domyślne lub jakie inne ograniczenia katalogów domowych są używane przez system..gdbinit
plik, ale tak nie jest, oznacza to, że nie maszumask
ustawionej rozsądnej wartości, takiej jak022
. W systemie z wieloma użytkownikami masz większe problemy niż sam.gdbinit
plik.Odpowiedzi:
Krótka odpowiedź:
echo 'set history save on' >> ~/.gdbinit && chmod 600 ~/.gdbinit
Długa odpowiedź:
Historia poleceń jest opisana w instrukcji GDB, 22.3 Historia poleceń . Utwórz plik
$HOME/.gdbinit
, zmień jego uprawnienia0600
i dodaj następującą treść:Możesz ustawić liczbę wcześniejszych poleceń zapisanych za pomocą następujących. Polecenie jest opisane jako „Ustaw liczbę poleceń przechowywanych przez gdb na liście historii. Wartość domyślna to wartość zmiennej środowiskowej GDBHISTSIZE lub 256, jeśli ta zmienna nie jest ustawiona. Wartości nienumeryczne GDBHISTSIZE są ignorowane. Jeśli rozmiar jest nieograniczony lub jeśli GDBHISTSIZE jest liczbą ujemną lub pustym łańcuchem, liczba poleceń przechowywanych przez gdb na liście historii jest nieograniczona " .
Powiązane polecenie to
set history remove-duplicates <count>
. Polecenie jest opisane jako „Kontroluj usuwanie zduplikowanych wpisów historii na liście historii poleceń. Jeśli liczba jest różna od zera, gdb spojrzy wstecz na ostatnie wpisy historii liczenia i usunie pierwszy wpis będący duplikatem bieżącego wpisu będącego dodane do listy historii poleceń. Jeśli liczba jest nieograniczona, to ten wygląd jest nieograniczony. Jeśli liczba jest równa 0, usuwanie zduplikowanych wpisów historii jest wyłączone " .Domyślnie gdb zapisuje historię w pliku ./.gdb_history w bieżącym katalogu . Jeśli chcesz, aby historia poleceń nie zależała od katalogu, w którym się znajdujesz, dołącz także:
źródło
n
potem klawisz strzałki w górę, mam wszystkie poprzednie polecenia, które zaczynająn
.Jeśli nadal masz problemy, upewnij się, że zmienna środowiskowa HISTSIZE ma odpowiednio wysoką liczbę. Mój był pusty, co spowodowało ustawienie domyślnego rozmiaru historii gdb na 0.
Dodany
do mojego ~ / .bashrc i wszystko puchnie
Możesz sprawdzić ustawienia historii gdb, wykonując (wewnątrz gdb) „pokaż historię”:
Z dokumentów :
źródło
set history size 100
pliku .gdbinit zmienna środowiskowa HISTSIZE wciąż powodowała ustawienie wielkości historii na zero. Problem polega na tym, że gdb nie rozumie, że HISTSIZE można ustawić na nieograniczonyHISTSIZE
jest ustawiony, musi wynosić> 0, inaczej gdb wyłączy historię.