Etabli
← Retour aux leçons
Leçon · FND-11 · Liaison série et débogage · 4/4

Maîtriser : déboguer méthodiquement à la trace

4 étapes·20 min·0/4 fait·quiz à réussir
voix

Déboguer, ce n'est pas relire son code en priant : c'est mener une enquête. Une hypothèse précise, UNE trace qui la tranche, une conclusion honnête — puis la suivante, jusqu'au coupable. Cette leçon t'apprend aussi le prix des indices : à 115200 , vingt caractères confisquent presque deux millisecondes de boucle. Enquête méthodique, traces économes, et nettoyage en fin d'affaire.

📖 Comprendre

1. Hypothèse → trace ciblée → conclusion

Face à un bug, l'amateur ajoute des traces partout et espère ; le professionnel écrit d'abord une HYPOTHÈSE précise : « le n'est jamais franchi », « la vitesse reste à zéro après le virage ». Puis il pose LA trace qui tranche — une seule, à l'endroit exact — et lit le verdict : hypothèse confirmée ou écartée. Dans les deux cas il a appris quelque chose, et l'enquête avance.

Deux règles gardent l'enquête honnête. Une seule modification à la fois : change deux choses, et tu ne sauras jamais laquelle a produit l'effet. Et note tes conclusions — « boucle vivante », « décision saine », « mesure suspecte » — car une enquête sérieuse élimine chaque suspect UNE fois, et n'y revient pas. La méthode paraît lente ; elle est dix fois plus rapide que le tâtonnement.

2. Encadrer le suspect

Quand l'hypothèse désigne une zone — « ça se passe quelque part dans la décision » — encadre-la : une trace juste AVANT le bloc suspect, avec les valeurs qui y entrent, une juste APRÈS, avec ce qui en sort. Les deux s'affichent ? Le bloc est traversé, et tu compares entrée et sortie. La première sans la seconde ? Le reste coincé entre tes deux témoins : le bug est cerné.

Puis resserre l'étau : déplace les deux témoins l'un vers l'autre, en coupant à chaque fois la zone en deux. À chaque resserrement, la moitié du territoire est innocentée — huit lignes suspectes ne demandent que trois resserrements. C'est la recherche par moitiés, appliquée au débogage : le suspect finit coincé entre deux impressions, sans échappatoire.

PERCEVOIRcapteursDÉCIDERcerveauAGIRactionneursles capteurs regardent le monde…

3. Le prix d'une trace

Chaque caractère envoyé occupe le fil : dix à 115200 . Écrire « [] distance : 52 » avec son retour à , c'est 20 caractères, 200 bits — environ 1,7 milliseconde de transmission. Les premières lettres partent par un petit tampon sans bloquer ; mais si la boucle imprime plus vite que le fil n'écoule, le tampon se remplit… et l'impression FAIT ATTENDRE la boucle.

Fais le compte sur une boucle à cent tours par seconde : dix millisecondes par tour, dont 1,7 pour une seule trace — dix-sept pour cent du temps de réflexion, confisqués par le bavardage. Le symptôme classique : un robot mou AVEC ses traces, vif sans elles — l'observation qui dérange l'observé. Les remèdes : tracer une fois sur dix, ou seulement quand la valeur CHANGE.

delay(500)0 ms…il compte, il ne fait RIEN d'autrependant delay : le monde continue, le processeur non

4. Nettoyer après l'enquête

L'affaire est résolue ? Retire tes traces d'enquête — ou fais-les taire. Elles ont coûté du temps de boucle pour répondre à une question désormais tranchée : les laisser, c'est payer à chaque tour pour un renseignement dont plus personne ne veut. Un qui part en compétition embarque ses , pas les échafaudages de son chantier.

Ce qui mérite de rester : un petit tableau de bord — UNE ligne compacte, rafraîchie quelques fois par seconde : « d:52 v:120 etat:avance ». Quelques dizaines de caractères, un coût connu et accepté, et l'essentiel de la santé du robot d'un seul regard. Traces d'enquête éphémères, tableau de bord permanent : c'est l'hygiène d'un robot bien tenu.

🧮 Exemple guidé : le vrai prix d'un print

Ta boucle tourne cent fois par seconde et imprime à chaque tour « [capteur] distance : 52 » suivi d'un retour à la ligne — 20 caractères. Combien cette trace coûte-t-elle, et que rapporte l'échantillonnage une fois sur dix ?

  1. 1.20 caractères × 10 bits = 200 bits à faire défiler sur le fil pour chaque impression.
  2. 2.200 ÷ 115200 ≈ 0,0017 s : chaque trace occupe le fil environ 1,7 ms.
  3. 3.Boucle à 100 tours par seconde → 10 ms par tour : la trace confisque 1,7 ÷ 10 = 17 % du tour.
  4. 4.Une fois sur dix : 1,7 ms tous les dix tours, soit 0,17 ms de coût moyen — 1,7 % : indolore, et la courbe reste lisible.

Dix-sept pour cent de boucle pour une seule ligne bavarde : voilà pourquoi un robot ralentit quand on l'observe trop. Échantillonner divise la facture par dix sans crever l'œil de l'enquêteur — et la trace devenue inutile, elle, se supprime tout simplement.

🛠 Pratiquer sur l'établi

  1. 01Encadrer un bug entre deux impressions témoins

    Choisis un bug réel ou provoque-le, écris ton hypothèse en une phrase, puis poste tes deux témoins : une trace avant le bloc suspect avec les valeurs d'entrée, une après avec le résultat. Resserre l'étau moitié par moitié jusqu'à coincer le coupable entre deux lignes. Une conclusion par resserrement, notée dans le carnet : l'enquête avance par éliminations.

    sur l'établi
    PERCEVOIRcapteursDÉCIDERcerveauAGIRactionneursles capteurs regardent le monde…

Objectifs

  • +Encadrer un bug par des traces
  • +Tracer sans ralentir la boucle
  • +Construire de bord texte
🧪 S'entraîner dans le bac à sable

Quiz de validation

À réussir pour valider la leçon

Réponds de mémoire, sans remonter la page : c'est l'effort de rappel qui grave le cours. Les trois bonnes réponses valident la leçon.

1. Le robot tourne à gauche au lieu de droite. Par quoi commence l'enquête ?

2. Que signifie « encadrer » un bloc suspect ?

3. Pourquoi retirer ses traces d'enquête une fois le bug corrigé ?

🧠 Ce qu'il faut retenir

  • 1.Deux traces bien placées coincent n'importe quel bug entre elles.
  • 2.Trop de prints ralentissent la boucle : on échantillonne ses traces.
  • 3. de bord texte vaut souvent mieux qu'un débogueur complet.