Outre gdb
, il existe plusieur débogueurs présentant des interfaces graphiques, comme xxgdb, xdbx
ou ddd
.
gprof
: on peut analyser, suivre et mesurer les performances d'un programme grâce à gprof
. Il faut d'abord compiler le programme avec l'option -pg, puis lancer le programme. Un fichier nommé gmon.out
est alors crée, qui sera utilisé par gprof
. Il suffit ensuite d'appeler gprof
:
gprof linatd2 | less
La sortie étant assez longue, il faut mieux la rediriger. On peut lire le temps passé par chaque fonction, en pourcentage et en secondes, pour la fonction elle même et pour les autre fonctions appelées, le nombre d'appels...La seconde partie donne un ``graphique d'appels'' décrivant qui appelle quoi, et combien de fois.
strace
: le programme strace
permet d'afficher les appels système exécutés lors du fonctionnement d'une application. On constate qu'un programme commence par charger les bibliothèques partagées (open
...close
) puis récupére les caractéristiques du terminal avant de tenter d'y expédier des données (ioctl
). Enfin, le message affiché à l'écran est écrit (write
).
checker
: pour les violations d'espace mémoire, l'option -lchecker peut être utile lors de la compilation. Par exemple, le programme :
#include <malloc.h> int main () { char *lamemoire, ch; lamemoire = (char *) malloc (10 * sizeof (char)); ch = lamemoire[1]; /* lecture de memoire non initialisee */ lamemoire[12] = ' '; /* ecriture apres un bloc non alloue */ ch = lamemoire[-2]; /* lecture avant le bloc alloue */ }
tente quelque opérations douteuses. Avec Checker, lors de l'exécution, des messages d'erreur s'afficheront. Une fois ces erreurs corrigées, on pourra compiler le programme normalement.