Déboguer proprement avec printf()

Problème

Votre programme s’arrête intempestivement et vous ne souhaitez pas mettre en œuvre des outils de débogage car vous pensez que déboguer avec printf() ira plus vite et mieux.

Solution

Profitez des macros prédéfinies __FILE__ et __LINE__ dans vos lignes avec printf() et procédez de manière dichotomique pour trouver la ligne où votre programme renvoie un résultat imprévu.

Discussion

Si déboguer avec printf() est généralement efficace, la vitesse et l’efficacité dépendront de chacun. Certains préfèrent utiliser le débogueur gdb, qui nécessite un apprentissage préalable. D’autres trouvent plus pratique la simplicité d’un printf(). D’autres outils existent par ailleurs, et la seule chose que nous pouvons dire est de connaître plusieurs moyens de déboguer pour passer à l’autre quand l’un montre ses faiblesses.

La ligne suivante affiche le nom du fichier ainsi que le numéro de la ligne sur laquelle se trouve l’appel à printf() :


printf("%s :%d\n", __FILE__, __LINE__);
 

Si vous envisagez d’écrire les données dans un fichier au lieu de les afficher, utilisez fprintf(fd, ... au lieu de print(... Vous pouvez d’ailleurs utiliser aussi dès le début fprintf(stdout, ... qui équivaut à printf(... et ne remplacer que fd par stdout.

Cette ligne...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Introduction
Suivant
Déterminer où le programme stoppe