2010-07-05 20 views
160

¿Cómo puedo configurar gdb para que guarde el historial de comandos? Al comenzar una nueva sesión gdb me gustaría utilizar las teclas de flecha hacia arriba para acceder a los comandos de las sesiones anteriores.¿Cómo puedo hacer que gdb guarde el historial de comandos?

+1

Nota: El archivo '.gdbinit' tiene que estar protegido contra escritura por otros que usted en linux. – urzeit

+0

@urzeit - Creo que es una causa perdida en las distribuciones como Ubuntu. Permiten a cualquier persona en el directorio de inicio de otra persona de forma predeterminada. – jww

+0

@jww El archivo '.gdbinit' no se procesa si los permisos no están configurados correctamente, independientemente de cuál sea el valor predeterminado o qué otras limitaciones de los directorios de inicio utiliza el sistema. – urzeit

Respuesta

225

Respuesta corta: echo 'set history save on' >> ~/.gdbinit && chmod 600 ~/.gdbinit


Respuesta larga:

la historia de comandos está cubierto de la GDB manual, 22.3 Command History. Crear un archivo $HOME/.gdbinit, cambiar sus permisos para 0600, y añadir el siguiente contenido:

set history save on 

Puede establecer el número de comandos pasados ​​guardados con lo siguiente. El comando se describe como "Establezca el número de comandos que gdb mantiene en su lista de historial. Este valor predeterminado es el valor de la variable de entorno GDBHISTSIZE, o 256 si no se establece esta variable. Los valores no numéricos de GDBHISTSIZE se ignoran. Si el tamaño es ilimitado o si GDBHISTSIZE es un número negativo o una cadena vacía, entonces el número de comandos que gdb mantiene en la lista del historial es ilimitado ".

set history size <size> 

Un comando relacionado es set history remove-duplicates <count>. El comando se describe como "Controlar la eliminación de entradas de historial duplicadas en la lista de historial de comandos. Si el recuento no es cero, gdb revisará las últimas entradas del historial de conteos y eliminará la primera entrada que es un duplicado de la entrada actual que se agrega a la lista del historial de comandos. Si el recuento es ilimitado, este aspecto detrás no tiene límites. Si el recuento es 0, la eliminación de las entradas de historial duplicadas está deshabilitada ".

set history remove-duplicates <count> 

Por defecto, el BGF guarda la evolución en el archivo ./.gdb_history in the current directory. Si desea que su historial de comandos no depender de directorio donde se encuentra, también incluyen:

set history filename ~/.gdb_history 
+4

Acabo de enterarme de esto y pensé en compartirlo en SO. – Frank

+3

Para la próxima vez, es perfectamente legítimo crear preguntas autocontestadas como non-community-wiki. :) –

+0

@Frank ¿Qué tal si escribo 'n' luego hago clic en la flecha hacia arriba, obtengo todos los comandos anteriores que comienzan con' n'. – SIFE

6

Si todavía tiene problemas, asegúrese de que la variable de entorno HISTSIZE es un número suficientemente alto. La mía estaba vacío, causando "tamaño de la historia" del BGF establecer por defecto a 0.

Agregado

export HISTSIZE=100000000 

a mi ~/.bashrc y todo es oleaje

Puede comprobar la configuración del historial GDB por haciendo (dentro de gdb) "mostrar la historia":

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. 

Desde el docs:

conjunto de la historia tamaño tamaño
conjunto tamaño del historial ilimitado
Establecer el número de órdenes que el BGF mantiene en su lista de historial. De manera predeterminada, el valor de la variable de entorno HISTSIZE, o 256 si esta variable no está configurada. Si el tamaño es ilimitado, la cantidad de comandos que GDB mantiene en la lista del historial es ilimitada.

+0

Tuve el mismo problema. A pesar de poner 'set history size 100' en el archivo .gdbinit, la variable de entorno HISTSIZE seguía causando que el tamaño del historial se estableciera en cero. El problema es que gdb no comprende que [HISTSIZE se puede establecer en ilimitado] (http://stackoverflow.com/questions/9457233/unlimited-bash-history) – DavidW

+0

El error HISTSIZE en gdb ha sido [solucionado a partir de Junio ​​de 2015] (https://sourceware.org/bugzilla/show_bug.cgi?id=16999), no es probable que este cambio aún esté presente en su sistema. Mientras tanto, si 'HISTSIZE' está configurado, debe ser> 0, o gdb desactivará el historial. –

Cuestiones relacionadas