Suivant: Reconstruire les informations de débogage, Monter: Installer les fichiers de débogage [Table des matières][Index]
Le problème avec les informations de débogage est qu’elles prennent pas mal de place sur le disque. Par exemple, les informations de débogage de la bibliothèque C de GNU prend plus de 60 Mo. Ainsi, en tant qu’utilisateur, garder toutes les informations de débogage de tous les programmes installés n’est souvent pas une possibilité. Cependant, l’économie d’espace ne devrait pas empêcher le débogage — en particulier, dans le système GNU, qui devrait faciliter pour ses utilisateurs l’exercice de leurs libertés (voir Distribution GNU).
Heureusement, les utilitaires binaires de GNU (Binutils) et GDB fournissent un mécanisme qui permet aux utilisateurs d’avoir le meilleur des deux mondes : les informations de débogage peuvent être nettoyées des binaires et stockées dans des fichiers séparés. GDB peut ensuite charger les informations de débogage depuis ces fichiers, lorsqu’elles sont disponibles (voir Separate Debug Files dans Debugging with GDB).
La distribution GNU se sert de cela pour stocker les informations de
débogage dans le sous-répertoire lib/debug
d’une sortie séparée du
paquet appelée sans grande imagination debug
(voir Des paquets avec plusieurs résultats). Les utilisateurs peuvent choisir d’installer la sortie
debug
d’un paquet lorsqu’ils en ont besoin. Par exemple, la commande
suivante installe les informations de débogage pour la bibliothèque C de GNU
et pour GNU Guile :
guix install glibc:debug guile:debug
On doit ensuite dire à GDB de chercher les fichiers de débogage dans le
profil de l’utilisateur, en remplissant la variable
debug-file-directory
(vous pourriez aussi l’instancier depuis le
fichier ~/.gdbinit, voir Startup dans Debugging with GDB) :
(gdb) set debug-file-directory ~/.guix-profile/lib/debug
À partir de là, GDB récuperera les informations de débogage des fichiers .debug sous ~/.guix-profile/lib/debug.
Voici un script GDB alternatif qui est utile pour travailler avec d’autres profils. Il s’appuie sur l’intégration Guile facultative dans GDB. Ce bout de code est inclus par défaut sur le système Guix dans le fichier ~/.gdbinit.
guile (use-modules (gdb)) (execute (string-append "set debug-file-directory " (or (getenv "GDB_DEBUG_FILE_DIRECTORY") "~/.guix-profile/lib/debug"))) end
EN plus, vous voudrez sans doute que GDB puisse montrer le code source
débogué. Pour cela, vous devrez désarchiver le code source du paquet qui
vous intéresse (obtenu via guix build --source
, voir Invoquer guix build
) et pointer GDB vers ce répertoire des sources avec la commande
directory
(voir directory
dans Debugging with
GDB).
Le mécanisme de sortie debug
dans Guix est implémenté par le
gnu-build-system
(voir Systèmes de construction). Actuellement, ce n’est pas
obligatoire — les informations de débogage sont disponibles uniquement si
les définitions déclarent explicitement une sortie debug
. Cela
pourrait être modifié tout en permettant aux paquets de s’en passer dans le
futur si nos serveurs de construction peuvent tenir la charge. Pour
vérifier si un paquet a une sortie debug
, utilisez guix
package --list-available
(voir Invoquer guix package
).
Continuez à lire pour apprendre comment gérer les paquets qui n’ont pas de
sortie debug
.