web-dev-qa-db-fra.com

Comment puis-je faire en sorte que gdb enregistre l'historique des commandes?

Comment puis-je configurer gdb pour qu'il enregistre l'historique des commandes? Lors du démarrage d'une nouvelle session gdb, j'aimerais utiliser les touches fléchées vers le haut pour accéder aux commandes des sessions précédentes.

182
Frank

Réponse courte: echo 'set history save on' >> ~/.gdbinit && chmod 600 ~/.gdbinit


Longue réponse:

L'historique des commandes est couvert dans le manuel GDB, 22.3 Historique des commandes . Créez un fichier $HOME/.gdbinit, changez ses autorisations en 0600, et ajoutez le contenu suivant:

set history save on

Vous pouvez définir le nombre de commandes passées enregistrées avec les éléments suivants. La commande est décrite comme "Définissez le nombre de commandes que gdb conserve dans sa liste d'historique. La valeur par défaut est la valeur de la variable d'environnement GDBHISTSIZE, ou 256 si cette variable n'est pas définie. Non -les valeurs numériques de GDBHISTSIZE sont ignorées. Si la taille est illimitée ou si GDBHISTSIZE est soit un nombre négatif, soit la chaîne vide, le nombre de commandes que gdb conserve dans la liste d'historique est illimité ".

set history size <size>

Une commande associée est set history remove-duplicates <count>. La commande est décrite comme "Contrôlez la suppression des entrées d'historique en double dans la liste d'historique des commandes. Si le nombre n'est pas nul, gdb reviendra sur les dernières entrées d'historique de comptage et supprimera la première entrée il s'agit d'un doublon de l'entrée en cours ajoutée à la liste de l'historique des commandes. Si le nombre est illimité, ce retard est illimité. Si le nombre est 0, la suppression des entrées d'historique en double est désactivée ".

set history remove-duplicates <count>

Par défaut, gdb enregistre l'historique dans le fichier ./.gdb_history dans le répertoire courant . Si vous souhaitez que l'historique de vos commandes ne dépende pas du répertoire dans lequel vous vous trouvez, incluez également:

set history filename ~/.gdb_history
260
Frank

Si vous rencontrez toujours des problèmes, assurez-vous que votre variable d'environnement HISTSIZE est suffisamment élevée. Le mien était vide, ce qui faisait que le paramètre "taille d'historique" de gdb était réglé par défaut sur 0.

Ajoutée

export HISTSIZE=100000000

à mon ~/.bashrc et tout est gonflé

Vous pouvez vérifier vos paramètres d'historique gdb en faisant (à l'intérieur de gdb) "afficher l'historique":

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.

De la docs :

définir la taille de l'historique taille
définir la taille de l'historique illimitée
Définissez le nombre de commandes que GDB conserve dans sa liste d'historique. Il s'agit par défaut de la valeur de la variable d'environnement HISTSIZE, ou de 256 si cette variable n'est pas définie. Si la taille est illimitée, le nombre de commandes que GDB conserve dans la liste d'historique est illimité.

7
Xiao