Suivant: , Monter: Installer les fichiers de débogage   [Table des matières][Index]


17.1 Informations de débogage séparées

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.


Suivant: Reconstruire les informations de débogage, Monter: Installer les fichiers de débogage   [Table des matières][Index]