Suivant: , Précédent: , Monter: Top   [Table des matières][Index]


10 Installer les fichiers de débogage

Les binaires des programmes, produits par les compilateurs GCC par exemple, sont typiquement écrits au format ELF, avec une section contenant des informations de débogage. Les informations de débogage sont ce qui permet au débogueur, GDB, de relier le code binaire et le code source ; elles sont requises pour déboguer un programme compilé dans de bonnes conditions.

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 maintenant, GDB récupérera les informations de débogage dans les fichiers .debug de ~/.guix-profile/lib/debug.

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 la 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).


Suivant: , Précédent: , Monter: Top   [Table des matières][Index]