Next: Reconstrucción de la información para depuración, Up: Instalación de archivos de depuración [Contents][Index]
El problema con la información de depuración es que ocupa un espacio considerable en el disco. Por ejemplo, la información de depuración de la biblioteca C de GNU ocupa más de 60 MiB. Por tanto, como usuaria, mantener toda la información de depuración de todos los programas instalados no es habitualmente una opción. No obstante, el ahorro de espacio no debe ser impedir la depuración—especialmente en el sistema GNU, que debería facilitar a sus usuarias ejercitar su libertad de computación (see Distribución GNU).
Afortunadamente, las utilidades binarias GNU (Binutils) y GDB proporcionan un mecanismo que permite a las usuarias obtener lo mejor de ambos mundos: la información de depuración puede extraerse de los binarios y almacenarse en archivos separados. GDB es capaz entonces de cargar la información de depuración desde esos archivos, cuando estén disponibles (see Separate Debug Files in Debugging with GDB).
La distribución GNU toma ventaja de este hecho almacenando la información de
depuración en el subdirectorio lib/debug
de una salida separada del
paquete llamada debug
(see Paquetes con múltiples salidas). Las
usuarias pueden elegir si instalan la salida debug
de un paquete
cuando la necesitan. Por ejemplo, la siguiente orden instala la información
de depuración para la biblioteca C de GNU y para GNU Guile.
guix install glibc:debug guile:debug
Se debe decir entonces a GDB que busque los archivos de depuración en el
perfil de la usuaria, proporcionando un valor a la variable
debug-file-directory
(considere hacerlo en el archivo
~/.gdbinit, see Startup in Debugging with GDB):
(gdb) set debug-file-directory ~/.guix-profile/lib/debug
A partir de ese momento GDB obtendrá la información de depuración de los archivos .debug dentro de la carpeta ~/.guix-profile/lib/debug.
Below is an alternative GDB script which is useful when working with other profiles. It takes advantage of the optional Guile integration in GDB. This snippet is included by default on Guix System in the ~/.gdbinit file.
guile (use-modules (gdb)) (execute (string-append "set debug-file-directory " (or (getenv "GDB_DEBUG_FILE_DIRECTORY") "~/.guix-profile/lib/debug"))) end
Además, probablemente desee que GDB sea capaz de mostrar el código fuente
que está depurando. Para hacerlo, tiene que desempaquetar el código fuente
del paquete de su interés (obtenido con guix build --source
,
see Invocación de guix build
) e indicar a GDB cual es el directorio de
fuentes mediante el uso de la orden directory
(see directory
in Debugging with GDB).
El mecanismo de la salida debug
en Guix se implementa por el sistema
de construcción gnu-build-system
(see Sistemas de construcción). Ahora mismo
necesita una activación explícita—la información de depuración está
disponible únicamente para paquetes con definiciones que declaren
explícitamente una salida debug
. Para comprobar si un paquete tiene
una salida debug
, use guix package --list-available
(see Invocación de guix package
).
Siga leyendo para ver cómo tratar con paquetes que carezcan de la salida
debug
.