This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold intègre un débogueur Lua doté de fonctions d’inspection. Associé aux outils de profilage intégrés, il constitue un outil puissant qui peut vous aider à trouver la cause des bogues dans la logique de votre jeu ou à analyser les problèmes de performances.
La méthode la plus simple pour déboguer votre jeu dans Defold consiste à utiliser le débogage par affichage. Utilisez des instructions print() ou pprint() pour surveiller les variables ou indiquer le déroulement de l’exécution. Si un objet de jeu (game object) sans script se comporte de façon étrange, vous pouvez simplement lui associer un script dans le seul but de le déboguer. Chacune de ces fonctions d’affichage écrit dans la vue Console de l’éditeur et dans le journal du jeu.
En plus de l’affichage dans la console, le moteur peut également dessiner du texte de débogage et des lignes droites à l’écran. Pour cela, envoyez des messages au socket @render :
-- Draw value of "my_val" with debug text on the screen
msg.post("@render:", "draw_text", { text = "My value: " .. my_val, position = vmath.vector3(200, 200, 0) })
-- Draw colored text on the screen
local color_green = vmath.vector4(0, 1, 0, 1)
msg.post("@render:", "draw_debug_text", { text = "Custom color", position = vmath.vector3(200, 180, 0), color = color_green })
-- Draw debug line between player and enemy on the screen
local start_p = go.get_position("player")
local end_p = go.get_position("enemy")
local color_red = vmath.vector4(1, 0, 0, 1)
msg.post("@render:", "draw_line", { start_point = start_p, end_point = end_p, color = color_red })
Les messages de débogage visuel ajoutent des données à la chaîne de rendu, qui les dessine dans le cadre du rendu normal.
"draw_line" ajoute des données dont le rendu est effectué par la fonction render.draw_debug3d() dans le script de rendu."draw_text" est rendu avec la police /builtins/fonts/debug/always_on_top.font, qui utilise le matériau /builtins/fonts/debug/always_on_top_font.material."draw_debug_text" fonctionne comme "draw_text", mais le rendu utilise une couleur personnalisée.Vous souhaiterez probablement mettre à jour ces données à chaque image ; il est donc judicieux d’envoyer les messages dans la fonction update().
Pour lancer le débogueur, sélectionnez Debug ▸ Start/Attach. Cette commande démarre le jeu avec le débogueur attaché ou attache le débogueur à un jeu déjà en cours d’exécution.

Dès que le débogueur est attaché, vous pouvez contrôler l’exécution du jeu à l’aide des boutons de commande du débogueur dans la console ou du menu Debug :


end sous la ligne contenant l’appel à la fonction nextspawn() :

Une ligne de code Lua ne correspond pas à une seule expression. L’exécution pas à pas dans le débogueur avance d’une expression à la fois, ce qui signifie qu’actuellement, vous devrez peut-être appuyer plusieurs fois sur le bouton de pas à pas pour passer à la ligne suivante.
nextspawn() :


Pour ajouter ou supprimer un point d’arrêt, cliquez dans la colonne située juste à droite des numéros de ligne dans l’éditeur de code. Vous pouvez également sélectionner Edit ▸ Toggle Breakpoint dans le menu.
Enabled. Les points d’arrêt désactivés apparaissent creux pour indiquer qu’ils sont inactifs.


Pour modifier la condition du point d’arrêt, faites un clic droit dans la colonne située juste à droite des numéros de ligne dans l’éditeur de code, ou sélectionnez Edit ▸ Edit Breakpoint dans le menu.

Il n’est actuellement pas possible de modifier les variables au moyen de l’évaluateur.

Lorsque vous utilisez plusieurs points d’arrêt répartis dans différents scripts, l’onglet Breakpoints fournit une vue centralisée pour gérer tous vos points d’arrêt au même endroit.
Pour agir sur un point d’arrêt en particulier :
Sélectionnez plusieurs points d’arrêt avec Ctrl/Cmd+click ou Shift+click, puis faites un clic droit pour effectuer des actions groupées. Vous pouvez modifier simultanément les conditions de plusieurs points d’arrêt, changer leur état actif ou les supprimer entièrement.
Les boutons de la barre d’outils permettent d’activer, de désactiver ou d’inverser l’état de tous les points d’arrêt à la fois, ce qui est utile lorsque vous souhaitez exécuter votre jeu sans interruption tout en conservant leurs positions. Vous pouvez également tous les supprimer une fois votre session de débogage terminée.
Lua est livré avec une bibliothèque de débogage qui est utile dans certaines situations, en particulier si vous avez besoin d’inspecter les mécanismes internes de votre environnement Lua. Vous trouverez davantage d’informations dans le chapitre du manuel Lua consacré à la bibliothèque de débogage.
Si vous rencontrez une erreur ou si votre jeu ne se comporte pas comme prévu, voici une liste de vérification pour le débogage :
Vérifiez la sortie de la console et assurez-vous qu’elle ne contient aucune erreur d’exécution.
Ajoutez des instructions print à votre code pour vérifier qu’il est effectivement exécuté.
S’il ne s’exécute pas, vérifiez que vous avez effectué dans l’éditeur la configuration nécessaire à son exécution. Le script est-il ajouté au bon objet de jeu ? Votre script a-t-il acquis le focus d’entrée ? Les déclencheurs d’entrée sont-ils corrects ? Le code du shader est-il ajouté au matériau ? Etc.
Si votre code dépend des valeurs de variables (dans une instruction if, par exemple), affichez ces valeurs avec print à l’endroit où elles sont utilisées ou vérifiées, ou inspectez-les avec le débogueur.
Trouver un bogue peut parfois être un processus difficile et long, qui vous oblige à parcourir votre code morceau par morceau, à tout vérifier, à cerner le code défectueux et à éliminer les sources d’erreur. La meilleure méthode pour y parvenir est appelée « diviser pour régner » :
Bonne chasse aux bogues !
Si vous rencontrez des problèmes de physique et que les collisions ne fonctionnent pas comme prévu, il est recommandé d’activer le débogage de la physique. Cochez la case Debug dans la section Physics du fichier game.project :

Lorsque cette case est cochée, Defold dessine toutes les formes de collision et tous les points de contact des collisions :
