8.4. Mostrar los valores internos del programa con GDB
Mostrar los valores de las variables internas de un programa es importante para entender lo que el programa está haciendo. GDB ofrece múltiples comandos que puede utilizar para inspeccionar las variables internas. Esta sección describe los más útiles de estos comandos:
p
(imprimir)Muestra el valor del argumento dado. Normalmente, el argumento es el nombre de una variable de cualquier complejidad, desde un simple valor único hasta una estructura. Un argumento también puede ser una expresión válida en el lenguaje actual, incluyendo el uso de variables de programa y funciones de biblioteca, o funciones definidas en el programa que se está probando.
Es posible ampliar GDB con pretty-printer scripts de Python o Guile para la visualización personalizada de estructuras de datos (como clases, structs) utilizando el comando
print
.bt
(backtrace)Muestra la cadena de llamadas a funciones utilizadas para alcanzar el punto de ejecución actual, o la cadena de funciones utilizadas hasta que la ejecución fue terminada. Esto es útil para investigar errores graves (como los fallos de segmentación) con causas esquivas.
Añadiendo la opción
full
al comandobacktrace
también se muestran las variables locales.Es posible ampliar GDB con frame filter scripts de Python para la visualización personalizada de los datos mostrados mediante los comandos
bt
yinfo frame
. El término frame se refiere a los datos asociados a una única llamada a una función.info
El comando
info
es un comando genérico para proporcionar información sobre varios elementos. Toma una opción que especifica el elemento a describir.-
El comando
info args
muestra las opciones de la llamada a la función que es el marco actualmente seleccionado. -
El comando
info locals
muestra las variables locales en el marco actualmente seleccionado.
Para obtener una lista de los posibles elementos, ejecute el comando
help info
en una sesión GDB:(gdb) help info
-
El comando
l
(lista)-
Muestra la línea del código fuente donde se detuvo el programa. Este comando está disponible sólo cuando la ejecución del programa está detenida. Aunque no es estrictamente un comando para mostrar el estado interno,
list
ayuda al usuario a entender qué cambios en el estado interno ocurrirán en el siguiente paso de la ejecución del programa.
Recursos adicionales
- La API de GDB Python
- Depuración con GDB