Dernière mise à jour : 23/08/2011 à 13h10
Table des matières
A qui s'adresse cet article ?
Aux personnes ayant déjà un minimum d'expérience sous Linux et Mageia et souhaitant participer à son développement.
- Savoir configurer ses dépôts.
- Avoir les notions élémentaires sur l'utilisation de la console.
- Maitriser un minium l'anglais pour écrire un rapport est recommandé (mais on peut faire sans)
A quelle(s) situation(s) s'applique(ent) cet article ?
Nous allons parler ici des programmes qui "plantent" comme on le dit souvent et qui se traduit souvent par une fermeture non désirée du programme... Ce sera utile pour les testeurs de cauldron (version de développement de Mageia, mais aussi pour les versions stables : des bugs subsistent toujours !
Lorsqu'une application plante ou pire, ne démarre pas, on applique de suite quelques réflexes :
- Est ce reproductible : tout le temps, souvent, parfois... pas reproductible.
- Si je démarre l'appliction dans une console, est-ce que j'ai des informations ?
Les applications doivent être lancées en tant qu'utilisateur et non root ! (sauf cas particulier) On tape directement le nom de l'executable dans la console. ex : kwrite
L'une des choses auquel on sera attentif est le fameux segfault ou segmentation fault, erreur de segmentation en français.
Générer une backtrace
Une backtrace est la suite des appels de fonction du programme. Utile aux devs pour savoir ce qui "s'est passé".
Certaines applications possèdent des utilitaires qui affichent et proposent d'envoyer un rapport de bug. C'est le cas de KDE par exemple. Le soucis, c'est qu'en l'état, ce n'est pas complet (si vous voyez des ?? partout, c'est que ce n'est pas bon).
D'autres programmes n'ont pas ce genre d'utilitaire : gajim, xchat... et il faudra faire ça manuellement.
Parfois il y a des exceptions à la procedure, comme firefox ou thunderbird...
gdb, tu installeras
Code BASH :
urpmi gdb
Utile, c'est lui qui va générer la backtrace.
Les dépôts debug, tu activeras
Il faut des binaires "spéciaux" pour générer une backtrace, il faut installer des paquets supplémentaires.
Code BASH :
drakrpm-edit-media --expert
Là, on coche les dépôts debug.
Les paquets debug, tu installeras
Si on a un soucis avec gajim :
Code BASH :
; A noter que ce n'est souvent pas suffisant, mais on le saura en temps voulu.urpmi gajim-debug
Pour des applications KDE, cette liste est un bon début :
Code BASH :
urpmi kdebase4-debug kdebase4-workspace-debug kdeplasma-addons-debug kdelibs4-debug kdenetwork4-debug
Code BASH :
urpmi kdepim4-debug kdepimlibs4-debug kdemultimedia4-debug amarok-debug digikam-debug qt4-debug
A la recherche du backtrace
C'est parti ! Si c'est une appli KDE, ou qui possède un utilitaire gentil qui génère ce qu'il faut, c'est facile.
Si c'est un autre programme, on sort une console et on démarre gdb :
Code BASH :
gdb gajim
Ensuite, on lance le programme (c'est plus lent que d'habitude, c'est normal)
Code BASH :
run
On reproduit le bug... (ça doit planter quoi

Code BASH :
bt full
Ca génère la backtrace. Deux cas de figures :
- Tous les appels sont OK, pas de ??? partout et en avant pour un rapport.
- Il y a des ?? partout, on regarde bien en haut, il va peut être vous demander d'autres paquets debug. Vous devinez, on installe ces paquets et on recommence. S'il n'y a pas de suggestion, on regarde le nom des bibliothèques (lib) ou des programmes et on cherche le bon paquet... il faut tatoner, mais c'est plutôt rare.
Le cas Mozilla
Thunderbird et Firefox passent par des scripts pour être lancé, si vous tentez la méthode ci-dessus, ça ne fonctionnera pas. A la place de gdb thunderbird, on lance
Code BASH :
thunderbird --debug
et le tour est joué.