it-swarm.com.de

Wie kann ich gdb veranlassen, den Befehlsverlauf zu speichern?

Wie kann ich gdb so einrichten, dass der Befehlsverlauf gespeichert wird? Beim Starten einer neuen gdb Sitzung möchte ich die Pfeiltasten nach oben verwenden, um auf die Befehle der vorherigen Sitzungen zuzugreifen.

182
Frank

Kurze Antwort: echo 'set history save on' >> ~/.gdbinit && chmod 600 ~/.gdbinit


Lange Antwort:

Die Befehlshistorie wird im GDB-Handbuch, 22.3 Befehlshistorie behandelt. Erstelle eine Datei $HOME/.gdbinit, ändern Sie die Berechtigungen in 0600, und fügen Sie den folgenden Inhalt hinzu:

set history save on

Sie können die Anzahl der zuvor gespeicherten Befehle wie folgt festlegen. Der Befehl wird beschrieben als "Legen Sie die Anzahl der Befehle fest, die gdb in seiner Verlaufsliste aufbewahrt. Dies ist standardmäßig der Wert der Umgebungsvariablen GDBHISTSIZE oder 256, wenn diese Variable nicht festgelegt ist. Non -numerische Werte von GDBHISTSIZE werden ignoriert. Wenn size unbegrenzt ist oder wenn GDBHISTSIZE entweder eine negative Zahl oder eine leere Zeichenfolge ist, ist die Anzahl der Befehle, die gdb in der Verlaufsliste behält, unbegrenzt ".

set history size <size>

Ein verwandter Befehl ist set history remove-duplicates <count>. Der Befehl wird als "Kontrollieren Sie das Entfernen doppelter Verlaufseinträge in der Befehlsverlaufsliste. Wenn count ungleich Null ist, wird gdb auf die letzten Einträge im Verlaufsverlauf zurückblicken und den ersten Eintrag entfernen Dies ist ein Duplikat des aktuellen Eintrags, der der Befehlsverlaufsliste hinzugefügt wird. Wenn die Anzahl unbegrenzt ist, ist dieser Lookbehind unbegrenzt. Wenn die Anzahl 0 ist, ist das Entfernen doppelter Verlaufseinträge deaktiviert ".

set history remove-duplicates <count>

Standardmäßig speichert gdb den Verlauf in der Datei ./.gdb_history im aktuellen Verzeichnis . Wenn Sie möchten, dass Ihr Befehlsverlauf nicht von dem Verzeichnis abhängt, in dem Sie sich befinden, geben Sie Folgendes an:

set history filename ~/.gdb_history
260
Frank

Wenn Sie weiterhin Probleme haben, stellen Sie sicher, dass Ihre Umgebungsvariable HISTSIZE eine entsprechend hohe Zahl ist. Meins war leer, was dazu führte, dass die "Verlaufsgröße" von gdb standardmäßig auf 0 gesetzt wurde.

Hinzugefügt

export HISTSIZE=100000000

zu meinem ~/.bashrc und alles schwillt an

Sie können die Einstellungen Ihres GDB-Verlaufs überprüfen, indem Sie (in GDB) "Verlauf anzeigen" ausführen:

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.

Aus dem docs :

Verlaufsgröße festlegen Größe
Verlaufsgröße unbegrenzt festlegen
Legen Sie die Anzahl der Befehle fest, die von GDB in der Verlaufsliste gespeichert werden. Dies ist standardmäßig der Wert der Umgebungsvariablen HISTSIZE oder 256, wenn diese Variable nicht festgelegt ist. Wenn die Größe unbegrenzt ist, ist die Anzahl der Befehle, die GDB in der Verlaufsliste behält, unbegrenzt.

7
Xiao