Débugage

Débuguer une application Flask peut être un processus relativement simple si l’on suit quelques bonnes pratiques. Voici quelques conseils pour t’aider à débuguer ton programme efficacement.

Dans cette page tu trouveras :

Les premiers réflexes à avoir

Les bonnes pratiques

Pour pouvoir te débuguer rapidement, tu dois toujours avoir en tête une méthodologie te permettant de pointer facilement le code qui a pu poser souci.

Test souvent ton code :

Teste ton code à chaque fin d’étape d’une route, d’une fonction, d’un rendu visuel etc.. Cela te permet de voir le résultat et t’assurer que tout fonctionne avant de passer à la suite de ta programmation. 

En prenant ce simple réflexe, lorsque tu auras un bug, tu pourras cerner un bout de code beaucoup plus petit, donc plus précis, et cibler facilement l’endroit où cela ne va pas. 

Analyse le comportement de ton programme :

Avant de te lancer dans le débugage, analyse le comportement de ton programme en te posant ces 3 questions :

  • Qu’est ce que je voulais faire ?
  • Quel résultat ai-je obtenu? 
  • Que m’indique la console ?

La console 

Dans replit, ouvre toujours l’outil « console ». Elle te donnera toutes les indications nécessaires pour comprendre ce qui provoque une erreur. 

Nous allons y revenir lors d’exemples précis ci-dessous, mais tu auras des informations comme : 

  • Un code erreur qui cible le type de problème
  • Une phrase (en anglais) qui te permet d’avoir des informations complémentaires
  • Le nom du fichier contenant une erreur
  • Et même la ligne vers laquelle le programme bug.
Retiens qu’en cas d’erreur, elle sera toujours en dernière ligne de ta console. Tu peux aller tout de suite à la fin des informations données.

Sur l’exemple de l’image, c’est un code HTTP 200, qui signifie « OK ». Il est utilisé pour indiquer que la requête du client a été traitée avec succès.

Vu que tout va bien, aucune autre information n’est donnée.

Déchiffrer les erreurs en console

Les problèmes de syntaxe

C’est l’une des erreurs les plus faciles à corriger car la console va te donner l’erreur le plus précisément possible.

Dans cet exemple tu peux voir que l’erreur :

  • Se trouve le fichier main.py, ligne 60
  • Dans la méthode def lieu(id_post)
  • Et que c’est SyntaxeError, précise, il manque les « : » à la fin de la déclaration de la méthode

Les problèmes d’indentation

L’erreur d’indentation avec Flask se produit lorsque l’alignement des espaces ou des tabulations dans le code n’est pas correct. 

En python (vu que Flask est un framework python), l’indentation est utilisée pour délimiter les blocs de code, et faire comprendre au programme les lignes de code inclus dans une méthode, une condition, une boucle, etc.

Dans cet exemple tu peux voir que l’erreur :

  • Se trouve le fichier main.py, ligne 85
  • Au niveau de la variable db_lieux
  • Et que c’est IndentationError, précise que l’indentation n’est pas bonne pour être comprise dans le « if »

Les codes de statut HTTP

Les codes de statut HTTP, que l’on va découvrir ci-dessous, fournissent des informations sur le résultat de la requête. C’est un indice précieux qui cible plus précisément le type d’erreur. 

Nous allons voir ci dessous les plus courantes :

L’erreur 400 : Bad Request

L’erreur Bad Request indique que la requête envoyée au serveur est incorrecte et ne peut pas être comprise pour être bien exécuter. Elle se voit donc qu’une fois que l’on a exécuté le code.

La console va donner le code statut HTTP indiquant l’erreur 400, sur quelle route il y a un souci, et aussi sur quelle méthode (POST OU GET).

Sur cet exemple, c’est sur une méthode POST sur la route register. 

Si on retient que c’est une erreur de requête, et sur le POST, on peut déduire rapidement que l’erreur de trouve sur un request.form dans la route /register

L’erreur 404 : Not Found

L’erreur Not Found signifie que la ressource demandée n’a pas été trouvée. On la voit donc en premier lieu, en exécutant le code.

C’est une erreur d’URL, c’est donc le nom de la route et son chemin pour l’atteindre, qu’il va falloir contrôler.

Dans la console, on peut voir que l’erreur 404 se trouve :

  • Sur la méthode GET, donc d’affichage des données pour l’utilisateur. 
  • Sur la route /adfr

L’erreur 405 : Method Not Allowed

L’erreur 404, Method not allowed, signifie que la méthode demandée (GET ou POST) n’est pas autorisée.

On va vérifier si la route a bien la méthode demandée. Et si elle est bien programmée.

Dans la console, on peut voir que l’erreur 405 se trouve :

  • Sur la méthode POST
  • Sur la route /register

L’erreur 500 : Internal Server error

L’erreur 500 indique une erreur interne du serveur. C’est la plus compliquée à résoudre, car elle peut venir de plusieurs facteurs. La console va devenir indispensable pour cibler au maximum ce qui ne va pas.

L’erreur 500 indique une erreur interne du serveur. C’est la plus compliquée à résoudre, car elle peut venir de plusieurs facteurs. 

La console va devenir indispensable pour cibler au maximum ce qui ne va pas.

Dans cet exemple, on peut voir que l’erreur 500 se trouve :

  • Sur le fichier main.py, ligne 28, dans la méthode index()
  • précisément sur le code lieux = db_lieux.find({})
  • L’erreur NameError indique que db_lieu n’est pas défini
  • Ce qui renvoie une erreur 500 sur la méthode GET
On va donc vérifier qu’il n’y a pas d’erreur d’orthographe dans la variable db_lieu.

Vérifier le bon fonctionnement de Replit

Il est essentiel de se rappeler que pour assurer le fonctionnement d’un code, il est nécessaire non seulement d’écrire un code correct, mais aussi d’avoir un bon fonctionnement de l’éditeur de code.
Une panne de Replit peut provoquer entre autre, une erreur 500, ou encore ce type d’erreur dans ta webview.

 

Si la console ne te permet pas de déterminer précisément le souci lié dans votre code, pense à vérifier le statut de fonctionnement de Replit.

Pour voir si tous les systèmes Replit sont opérationnels, tu as 2 solutions :

  • Tu peux cliquer sur cette URL : https://status.replit.com/
  • Ou cliquer sur le ? directement dans ton projet, en haut à gauche, et voir l’état de Replit. (Sur cet exemple, tout est ok).

 

Si le rond n’est pas vert avec écrit All systems operationnel, mais orange ou rouge avec un message d’erreur, tu peux cliquer dessus pour voir l’état général de replit, le bug en cours et connu, et également son état de résolution.

Retour en haut