Débogage

Roblox Studio offre de nombreux outils de débogage généralement présents dans les environnements de développement intégré (IDE). Le débogueur est un outil qui vous permet d'inspecter vos scripts ligne par ligne lorsqu'ils s'exécutent. Il affiche les données dans les fenêtres Inspecter, Pile des appels, Points d'arrêt et Sortie pour que vous puissiez les inspecter.

Débogueur dans Studio

Pour désactiver et réactiver le débogueur, ouvrez le menu Paramètres de Studio, activez le paramètre Débogueur activé, puis redémarrez Studio.

Activer le débogueur dans les paramètres de Studio

Flux de travail général

Si vous remarquez un problème dans votre expérience ou si vous souhaitez vérifier qu'elle fonctionne comme vous le souhaitez, vous pouvez déboguer son code de la manière suivante :

  1. Insérez des points d'arrêt sur les lignes de codes que vous souhaitez examiner.

  2. Dans l'onglet Script, cliquez sur Jouer ou Exécuter dans l'onglet test pour démarrer une session de test de jeu, également appelée session de débogage.

    Options de test de l'onglet Script
  3. Lorsqu'un script atteint un point d'arrêt, la session de test de jeu s'interrompt. Passez en revue le code. Inspectez les fenêtres Inspecter, Pile des appels et Sortie pour diagnostiquer et comprendre le problème.

  4. Insérer des points d'arrêt supplémentaires sur des lignes de code qui n'ont pas encore été exécutées afin d'inspecter des données supplémentaires. Désactiver ou supprimer les points d'arrêt dont vous n'avez plus besoin.

  5. Dans l'onglet Script, cliquez sur Arrêter pour mettre fin à la session de débogage.

    L'onglet Script affiche les boutons de test et d'arrêt

Répétez les étapes précédentes jusqu'à la résolution du problème ou la découverte de sa cause racine. Au fur et à mesure que vous vous familiarisez avec le flux de travail général, vous pouvez configurer les points d'arrêt pour qu'ils ne se déclenchent que si certaines conditions sont remplies, pour qu'ils impriment un message dans la fenêtre Sortie et pour qu'ils ne s'exécutent que sur le client ou sur le serveur. Pour plus d'informations, voir Configurations des points d'arrêt.

Insérer des points d'arrêt

Les points d'arrêt sont des points de contrôle qui mettent en pause ou interrompent l'exécution de vos scripts sur certaines lignes. Vous pouvez utiliser les pauses pour inspecter et déboguer votre expérience, surveiller les variables et inspecter la pile des appels. Les points d'arrêt constituent l'un des moyens les plus efficaces de déboguer les fonctions et sont donc l'un des outils de débogage les plus importants. Vous pouvez insérer un point d'arrêt à n'importe quelle ligne du code exécutable.

Pour insérer un point d'arrêt standard sur une ligne de code, effectuez un clic gauche sur la marge à droite de son numéro de ligne. Vous pouvez également effectuer un clic droit sur la marge et cliquer sur Insérer un point d'arrêt. Le point d'arrêt apparaît sous forme d'un point rouge. Pour le désactiver, cliquez sur ce point.

Le point d'arrêt dans la gouttière est un point rouge

Exécuter le code ligne par ligne

Si vous insérez un point d'arrêt sur une ligne d'un script, celui-ci se met en pause avant d'exécuter cette ligne. Une flèche jaune appelée « débogueur » indique la ligne de code qui s'exécute ensuite.

Le point d'arrêt actif dans le débogueur est représenté par une flèche jaune

Lorsque le script est en pause, exécutez le code suivant ligne par ligne en utilisant les boutons de l'onglet Script. Ces boutons apparaissent également dans le coin supérieur gauche de la fenêtre Pile des appels. Lorsque vous exécutez le code ligne par ligne, observez l'évolution de votre expérience au fur et à mesure de l'exécution de la ligne en cours.

Onglet Script, section Débogueur

Le tableau suivant résume les trois façons d'exécuter le code ligne par ligne. Pour poursuivre l'exécution de votre code après avoir atteint un point d'arrêt, cliquez sur Reprendre dans l'onglet Script.

BoutonActionRaccourciDescription
Bouton pour entrer dans une ligne de codeEntrer dansF11Le bouton Entrer dans place le débogueur dans le code de la fonction sur la ligne en cours. Si la ligne actuelle ne contient aucune fonction, le débogueur passe à la ligne suivante.
Bouton pour passer à une ligne de codePasser àF10Le bouton Passer à place le débogueur sur la ligne de code suivante sans passer par les fonctions.
Bouton pour sortir d'une ligne de codeRaccourciMaj + F11Le bouton Sortir permet au débogueur de sortir de la fonction en cours et de passer à la ligne de code qui suit l'appel de la fonction. Si la ligne en cours ne se trouve pas dans une fonction, le débogueur passe à la ligne suivante.

Inspecter le code

Lorsqu'un point d'arrêt interrompt l'expérience pendant un test de jeu, vous pouvez inspecter la fenêtre Inspecter, la fenêtre Pile des appels, la fenêtre Sortie et l'Éditeur de script pour trouver des informations sur les valeurs des variables et les exécutions de fonctions. Grâce à ces informations, vous pouvez trouver la cause racine du problème dans votre expérience.

Dans la fenêtre Inspecter

La fenêtre Inspecter comporte deux onglets : Variables et Mes inspections. L'onglet Variables affiche des informations sur la portée des variables actuelles, et l'onglet Mes inspections affiche la valeur des variables ou des expressions que vous définissez. Les deux onglets affichent des informations avant l'exécution de la ligne.

L'onglet Variables comporte les colonnes suivantes :

  • Nom – Le nom affiché de la variable.
  • Portée – La portée de la variable, là où elle peut être « vue » et consultée, par exemple Locale, Globale ou Valeur supérieure.
  • Valeur – La valeur actuelle de la variable.
  • Type de données – Le type de données de la variable.

L'onglet Mes inspections comporte les colonnes suivantes :

  • Expression – L'expression que vous souhaitez inspecter.
  • Valeur – La valeur actuelle de l'expression.
  • Type de données – Le type de données de l'expression.

Dans l'onglet Variables, vous pouvez filtrer la portée des variables en cliquant sur l'icône du filtre. Vous pouvez également trier les lignes en cliquant sur le nom de la colonne à trier. La fenêtre d'inspection fournit des vues étendues et réduites des tableaux.

Fenêtre d'inspection contenant des valeurs variables

Pour inspecter le code dans la fenêtre Inspecter :

  1. Si la fenêtre Inspecter n'est pas ouverte, cliquez sur Inspecter dans l'onglet Voir.

  2. Lorsque votre session de test de jeu marque une pause à un point d'arrêt, réfléchissez à la manière dont vous souhaitez que la ligne en cours modifie les valeurs des variables de ce script.

  3. Au fur et à mesure que vous exécuter le code ligne par ligne, inspectez les changements de valeur des variables dans l'onglet Variables. Si vous souhaitez observer une expression qui ne figure pas dans l'onglet Variables, ouvrez l'onglet Mes inspections. Cliquez sur une ligne vide dans la colonne Expression, puis saisissez l'expression. Si vous souhaitez surveiller une variable dans l'éditeur de script, double-cliquez sur le nom de la variable, effectuez un clic droit, puis cliquez sur Ajouter une inspection.

  4. Comparez les valeurs des variables et des expressions auxquelles vous vous attendiez et ce que vous voyez dans la fenêtre Inspecter. S'il existe une différence entre la façon dont vous vous attendez à ce que les variables changent et la façon dont elles changent réellement, alors les variables ou les fonctions qui interagissent avec ces dernières peuvent être à l'origine de problèmes ou de bogues.

Dans la fenêtre Pile des appels

La fenêtre Pile des appels indique la ligne de code qui va s'exécuter lorsque le débogueur atteint un point d'arrêt. La pile des appels indique la ligne à partir de laquelle vous appelez une fonction, ainsi que l'ordre des appels de fonction et les lignes dans lesquelles vous appelez les autres fonctions si vous appelez la fonction dans d'autres fonctions. La fonction située en haut de la pile des appels est la dernière appelée et la première à s'exécuter. Vous pouvez utiliser la pile des appels pour vérifier si l'ordre des appels de fonction dans vos scripts correspond à votre modèle mental des appels de fonction.

Pile des appels dans Studio

Si vous définissez plusieurs points d'arrêt dans différents scripts, il se peut qu'ils interrompent la session de test de jeu en même temps. Vous pouvez accéder aux points d'arrêt en cliquant sur la flèche située à côté du nom du script dans la fenêtre Pile des appels. Si vous cliquez sur Reprendre, vous passez sur tous les points d'arrêt qui ont été interrompus en même temps.

Pile des appels avec plusieurs points d'arrêt

Pour inspecter le code dans la fenêtre Pile des appels au cours d'une session de débogage :

  1. Si la fenêtre Pile des appels n'est pas ouverte, cliquez sur Pile des appels dans l'onglet Voir.

  2. Lorsque votre expérience marque une pause à un point d'arrêt, réfléchissez à l'ordre des appels de fonction prévu dans ce script.

    Éditeur de script avec deux fonctions et un point d'arrêt
  3. La pile des appels affiche l'ordre des appels de fonction. Si le point d'arrêt se trouve à l'intérieur d'une fonction, la pile des appels indique la fonction qui appelle cette fonction, le cas échéant. La pile des appels indique également le nom et le numéro de ligne de chaque fonction. Cliquez sur la ligne pour une fonction pour y accéder.

    Cliquez sur la pile des appels pour passer à la ligne
  4. Comparez l'ordre des appels de fonction que vous avez imaginé à l'étape 2 et l'ordre réel de l'étape 3. Si vous constatez des différences, cela signifie que le code ne comporte pas comme vous l'aviez prévu, ce qui peut entraîner des problèmes et des bogues.

Dans la fenêtre Sortie

La fenêtre Sortie, accessible à partir de l'onglet Voir, affiche les erreurs capturées dans les scripts en cours d'exécution, les messages du moteur Roblox, les messages de journal des points de journalisation, les messages des appels à print(), et les erreurs des appels à warn(). Pour plus d'informations sur la fenêtre Sortie et sur la manière de la personnaliser, voir Sortie.

Dans l'éditeur de script

Le débogueur est intégré à l'Éditeur de script. Lorsque votre expérience se met en pause à un point d'arrêt dans un script, vous pouvez survoler le nom d'une variable avec votre souris pour afficher sa valeur. Par exemple, vous pouvez voir la valeur d'un tableau que vous passez comme argument dans un appel de fonction.

Passer la souris sur une variable dans l'éditeur de script pour en afficher la valeur

Configurations des points d'arrêt

Vous pouvez configurer les points d'arrêt pour qu'ils ne s'interrompent que si certaines conditions sont remplies, pour qu'ils impriment un message dans la fenêtre Sortie et pour qu'ils s'exécutent uniquement sur le client ou le serveur. Vous pouvez également combiner ces configurations pour répondre au mieux à vos besoins de débogage.

Modifier les points d'arrêt

Vous pouvez modifier la configuration d'un point d'arrêt à tout moment, y compris pendant les sessions de test de jeu. Si vous modifiez des points d'arrêt pendant une session de test de jeu, ces modifications seront conservées même après la fin de la session. Vous pouvez également modifier un point d'arrêt qui met votre session de test de jeu en pause, cependant les modifications ne s'appliqueront qu'à la prochaine session de test de jeu.

Pour modifier la configuration d'un point d'arrêt :

  1. Effectuez un clic droit sur le point d'arrêt, puis cliquez sur Modifier le point d'arrêt.

    Clic droit pour modifier un point d'arrêt dans Studio
  2. Dans la fenêtre Modifier le point d'arrêt, configurez le point d'arrêt à votre guise.

    Fenêtre Modifier le point d'arrêt dans Studio

Condition, message du journal et options

Pour chaque point d'arrêt, vous pouvez définir les options Condition, Message de journal, Poursuivre l'exécution et Contexte.

La condition est l'expression qui détermine si le point d'arrêt est activé. La condition est facultative. Si la condition est vide, le point d'arrêt s'active systématiquement. Si la condition existe, le point d'arrêt est activé uniquement si la condition est vraie. Par exemple, si vous souhaitez que le point d'arrêt ne soit activé que si la variable n est égale à 42, définissez la condition comme suit : n == 42. Les conditions sont utiles pour déboguer la façon dont les fonctions s'exécutent lorsque certaines variables ont certaines valeurs ou si vous souhaitez uniquement interrompre certaines exécutions dans une boucle.

Le message de journal est l'expression qui s'imprime dans la fenêtre Sortie lorsque la condition est vraie. Le format du message de journal est le même que celui de l'argument d'une instruction print(). Par exemple, le message de journal doit être "The value of n:", n pour imprimer le même message que print("The value of n:", n). Vous pouvez ajouter et supprimer des messages de journal sans avoir à arrêter l'exécution, contrairement aux instructions d'impression.

L'option Poursuivre l'exécution détermine si le point d'arrêt interrompt le script s'il est activé. Cette option est utile si vous souhaitez enregistrer les valeurs de variables ou d'expressions sans interrompre l'exécution. Cette option est désactivée par défaut.

Le contexte d'un point d'arrêt détermine si ce dernier doit être activé sur le client, le serveur ou dans Modifier. Si le contexte est Client, le point d'arrêt se déclenche dans les scripts côté client. Si le contexte est Serveur, le point d'arrêt se déclenche dans les scripts côté serveur. Si le contexte est Modifier, le point d'arrêt se déclenche lorsque vous déboguez des plugins. Si vous cliquez sur Contexte personnalisé, la fenêtre vous indique le contexte actuel.

La fenêtre Modifier le point d'arrêt affiche le Contexte personnalisé

Points d'arrêt et points de journalisation

Studio propose des variations de points d'arrêt nommées afin d'accélérer l'insertion des points d'arrêt. Pour insérer une variante nommée, effectuez un clic droit sur la marge à droite de son numéro de ligne, puis cliquez sur la variante que vous souhaitez insérer.

Effectuez un clic droit pour insérer un point d'arrêt

Un point de journalisation est un point d'arrêt comportant un message de journal et dont l'exécution continue est activée. Les points de journalisation enregistrent les messages dans la fenêtre Sortie sans mettre vos scripts en pause, ce qui est utile pour déboguer les valeurs des variables. Les points de journalisation utilisent les valeurs des variables avant que la ligne ne s'exécute. Lorsque vous insérez un point de journalisation, votre curseur se concentre sur le message de journal pour que vous puissiez le définir rapidement.

Un point d'arrêt conditionnel est un point d'arrêt comportant une condition et dont l'exécution continue est désactivée. Les points de journalisation enregistrent les messages dans la fenêtre Sortie sans mettre vos scripts en pause, ce qui est utile pour déboguer les valeurs des variables. Les points d'arrêt conditionnels utilisent les valeurs des variables avant que la ligne ne s'exécute. Lorsque vous insérez un point d'arrêt conditionnel, votre curseur se concentre sur l'option Condition que vous pouvez définir rapidement.

Les points de journalisation sont souvent plus efficaces pour déboguer des variables que des instructions print(), car ils permettent d'enregistrer des messages dans la fenêtre Sortie sans avoir à arrêter ou à redémarrer la session de test de jeu active. Comparés aux instructions print(), ils permettent de conserver un code propre pendant le débogage et sont plus faciles à supprimer une fois que vous avez terminé.

Désactiver les points d'arrêt

Il existe de nombreuses façons de désactiver et de réactiver un point d'arrêt :

  • Cliquer sur l'icône du point d'arrêt.
  • Modifier le point d'arrêt et cocher la case Activé.
  • Effectuer un clic droit sur l'icône du point d'arrêt et cliquer sur Désactiver le point d'arrêt ou Activer le point d'arrêt.

Supprimer les points d'arrêt

Pour supprimer un point d'arrêt, effectuez un clic central sur son icône. Vous pouvez également effectuer un clic droit sur son icône et cliquer sur Supprimer le point d'arrêt.

Fenêtre Points d'arrêt

La fenêtre Points d'arrêt affiche tous les points d'arrêt de votre expérience. Pour ouvrir la fenêtre Points d'arrêt, cliquez sur l'onglet Voir en haut de Studio, puis sur Points d'arrêt.

Fenêtre Points d'arrêt dans Studio

La fenêtre Points d'arrêt comporte les colonnes suivantes : non étiqueté, Script, Ligne, Ligne source, Condition, Message de journal et Continuer l'exécution. Les colonnes non étiquetées, Script et Ligne s'affichent toujours, mais vous pouvez activer les autres colonnes en cliquant sur les trois points situés dans le coin supérieur droit de la fenêtre.

Dans la colonne non étiquetée, l'étiquette (x3) indique le nombre de points d'arrêt sur la même ligne de code, et l'icône indique la configuration du point d'arrêt. Les points d'arrêt sur la même ligne partagent les mêmes options Condition, Message de journal et Poursuivre l'exécution, mais leur contexte varie. Vous pouvez modifier la configuration d'un point d'arrêt dans la fenêtre Points d'arrêt. Par exemple, vous pouvez modifier la condition d'un point d'arrêt en modifiant la zone de texte de la colonne Condition.

Modifier la condition d'un point d'arrêt dans la fenêtre Points d'arrêt

Vous pouvez activer et désactiver les points d'arrêt en cliquant sur leur icône dans la colonne Activé. Vous pouvez également cliquer sur les boutons suivants pour activer, désactiver et supprimer tout ou partie des points d'arrêt.

BoutonAction
Bouton pour désactiver tous les points d'arrêtDésactiver tous les points d'arrêt. Si des points d'arrêt sont désactivés, activez-les tous.
Bouton pour supprimer tous les points d'arrêtSupprimer tous les points d'arrêt.

Icônes de point d'arrêt

L'icône d'un point d'arrêt varie selon qu'il est activé, qu'il a une condition ou qu'il a un message de journal. Si un point d'arrêt contient un message de journal, il apparaît alors comme un point de journalisation, qu'il soit ou non assorti d'une condition.

NomIcôneActivéCondition Message de journal
Point d'arrêtOuiNonNon
NonNonNon
Point d'arrêt conditionnelOuiOuiNon
NonOuiNon
Point de journalisationOuiPeut-êtreOui
NonPeut-êtreOui

Outils de débogage supplémentaires

Outre le débogueur, Studio propose d'autres outils de débogage qui vous permettent de résoudre les problèmes et les bogues de votre expérience.

Barre de commande

La barre de commande vous permet d'exécuter les commandes Luau pendant que l'expérience est exécutée. Vous pouvez la trouver dans Studio à partir de l'onglet Voir et dans la console développeur.

Console développeur

La console développeur fournit un large éventail de détails, y compris la sortie client et serveur, l'utilisation de la mémoire, la performance du réseau, et plus encore. Pour ouvrir la console développeur tout en testant ou en jouant à une expérience, saisissez /console dans le chat ou appuyez sur F9. Pour plus d'informations, voir Console développeur.

Dossiers de journal

Lorsqu'un script affiche un message d'erreur ou s'imprime dans Studio ou dans l'application Player, l'application enregistre le message dans un fichier journal situé dans le système de fichiers local. Ces fichiers sont situés à des emplacements différents selon le système d'exploitation :

  • Sous Windows, les journaux se trouve dans le répertoire %LOCALAPPDATA%\Roblox\logs. Trier le dossier par date de modification. Les noms des fichiers de journal commencent par le format log_XXXXX. Les journaux ayant la même valeur XXXXX proviennent de la même session de Studio.
  • Sous macOS, les journaux se trouvent dans le répertoire ~/Library/Logs/Roblox. Dans le Finder, cliquez sur le menu Aller, sélectionnez Aller au dossier, saisissez ce répertoire et confirmez.