Débogage

Il existe plusieurs manières (et outils) de déboguer un programme: choisir lequel utiliser dépend du type d'erreur que vous essayez de résoudre. Ceci dit, essayons de passer en revue les erreurs les plus courantes que vous rencontrerez.

Des Erreurs de syntaxe. Celles-ci sont produites par le compilateur Java; cela arrive parce que vous avez commis une erreur dans le code. Ces erreurs peuvent être simples, telles que l’oubli du point-virgule à la fin de l’instruction ou aussi complexes que des incompatibilités de types lorsqu’on transmet des paramètres à une certaine méthode. Lorsque ces erreurs se produisent, AS3 vous fournit de nombreuses informations visuelles et textuelles indiquant ce qui ne va pas avec votre code. La plupart du temps, cela vous indiquera même l'emplacement exact du problème

Exceptions Exceptions d'exécution. Celles-ci sont produites par le runtime. Ils se produisent parce qu'il y a quelque chose dans l'environnement d'exécution que vous n'avez pas anticipé et que votre programme ne peut pas continuer. Par exemple, si vous avez essayé d’ouvrir un fichier spécifique mais que, lors de l’exécution, ce fichier n’est pas celui attendu par votre programme. Lorsque vous rencontrez ces erreurs, le moteur d’exécution imprime des informations utiles pour la résolution de l’emplacement de l’erreur ou de la cause éventuelle de celle-ci. Vous allez ensuite parcourir le code et effectuer votre analyse. Vous pouvez insérer diverses instructions print dans les jonctions critiques du code pour valider et confirmer votre analyse de chemin d'accès de votre code. Vous pouvez également utiliser le débogueur interactif AS3. Le débogueur vous permet de parcourir votre code et de l'exécuter pendant son exécution.

 Logic errors

Ce sont probablement les plus difficiles à résoudre; ils sont causés par vous. Lorsque le programme se compile et s’exécute sans problèmes mais qu’il ne se comporte pas comme prévu, il s’agit d’une erreur de logique. Vous devez effectuer une analyse de code, puis insérer des instructions d'impression aux moments critiques de votre code ou utiliser le débogueur interactif (ou les deux). 

Syntax Errors

Les erreurs de syntaxe sont les plus faciles à repérer parmi les trois types d’erreurs, la plupart du temps de toute façon; C’est parce que AS3 a déjà fait l’essentiel du travail lourd pour détecter ce genre d’erreurs. La fenêtre principale de l’éditeur donne beaucoup de repères visuels et d’informations textuelles sur ce qui ne va pas avec votre code.La figure 9-1 montre comment AS3 nous aide à détecter les erreurs de codage. le code manque des points-virgules sur deux instructions. Les premières choses que vous remarquerez lorsque vous avez des erreurs de syntaxe sont des lignes rouges ondulées dans l’éditeur principal; notez les lignes ondulées à l'endroit où les points-virgules sont manquants. AS3 vous donne suffisamment d'indices visuels pour indiquer que quelque chose ne va pas avec votre code. Si vous passez votre souris assez longtemps au-dessus des lignes ondulées, AS3 affichera des messages utiles sous forme d’aides-conseils. 

Figure 9-1. Syntax error example

 

Si vous essayez de “Construire” ou de construire le projet, AS3 générera les erreurs du compilateur dans la fenêtre de l'outil Messages. Si vous double-cliquez sur les icônes d'erreur (les points d'exclamation rouges), la plupart du temps, votre curseur sera directement dirigé sur la ligne incriminée dans l'éditeur principal.Les erreurs de syntaxe ne sont pas toujours simples à résoudre, la figure 9-2 montre un affichage très coloré d’AS3 alors que nous essayons très difficilement de comprendre ce qui ne va pas avec le code, mais dans ce cas, ni les lignes ondulées ni les messages d’erreur réels ne sont très lointains. utile. Ce qui ne va pas dans le code, c’est une accolade qui manque dans l’instruction if, mais les messages d’erreur ne la pointent pas. Si vous rencontrez ce type d'erreur, vous pouvez toujours double-cliquer sur le point d'exclamation. Même s'il ne vous indiquera pas l'erreur exacte, vous pouvez commencer dans cette zone générale. Généralement, l'erreur est localisée avant l'emplacement du message d'erreur: élargissez votre recherche et entraînez-vous à regarder votre code de manière critique. Rechercher des problèmes structurels tels que parens manquants ou accolades. 

Figure 9-2. A more challenging syntax error

Exceptions d'exécution

Les exceptions d’exécution se produisent lorsque votre programme rencontre une condition inattendue dans l’environnement. Lorsque cela se produit, le moteur d'exécution imprime un message contenant le nom de l'exception, le numéro de la ligne dans le programme où l'exception s'est produite et un ensemble de traces de pile. La trace de la pile inclut la méthode qui était en cours d'exécution avant la survenue de l'exception, qui a appelé cette méthode, la méthode qui a appelé cette méthode qui a été appelée, etc., etc. Une mesure prudente consiste à regarder où l'erreur s'est produite dans le programme et à parcourir votre code à partir de là.En parcourant les codes, vous reconnaîtrez des zones où vous êtes certain de savoir ce qui se passe et d’autres où vous en êtes moins sûr. Dans ces cas, vous pouvez déposer certaines instructions d'impression dans les zones où vous êtes moins sûr du chemin que prendra votre code; les instructions print vous aideront à valider si vos hypothèses de chemin sont cohérentes avec le comportement du code à l’exécution. Vous pouvez utiliser l’instruction «System.out.println» de Java, qui est un favori parmi les codeurs, mais comme nous sommes sous Android, il est préférable d’utiliser la classe «Log». La classe Log comporte cinq méthodes statiques que vous pouvez utiliser pour la journalisation.n Log.v (String, String) (commenté)n Log.d (String, String) (débogage)n Log.i (String, String) (informations)n Log.w (String, String) (avertissement)n Log.e (String, String) (erreur)Les méthodes Log prennent deux arguments de chaîne. Le premier est une balise et le second est le message que vous souhaitez enregistrer. La «balise» sera utile ultérieurement lorsque vous essayez de filtrer tous les messages que le moteur d'exécution génère. il crache tout ce qui se passe dans le runtime Android. La "balise" vous aidera à parcourir le flot de messages plus tard. Le code suivant montre un exemple d'utilisation de l'une des méthodes de journal.

  1. private final String TAG = "My Application"; Log.i(TAG, "I got in here");

Lorsque vous exécutez votre application, vous pouvez consulter les messages du journal dans la fenêtre de l'outil Logcat (Figure 9-3). Vous pouvez le lancer en cliquant sur son onglet dans la barre de menu en bas de la fenêtre AS3 ou dans la barre de menus principale. View - Tool Windows - Logcat.

Figure 9-3. Logcat messages

The Logcat window shows all the messages (default setting) in the Android runtime (Figure 9-4). You can adjust the log level to either “verbose” (default) which shows all the messages, or any of the other four levels: “debug”, “info”, “warning”, “error”, or “assert”.

Figure 9-4. Logcat tool window

 

Erreurs de logique

Les erreurs de logique sont les plus difficiles à trouver, car ni le compilateur ni le moteur d’exécution ne peuvent vous donner d’informations sur ce qui ne va pas. La seule façon de dire que quelque chose ne va pas, c'est que le programme ne se comporte pas comme il se doit. Au fur et à mesure que vous avancez dans votre carrière de programmeur, vous rencontrerez le concept et, espérons-le, la pratique des tests unitaires; c'est généralement la première ligne de défense contre ce type d'erreur, mais malheureusement, les tests unitaires ne font pas partie de ce livre. Cependant, nous discuterons d'une technique qui peut également vous aider à résoudre des erreurs de logique.AS3 comprend un débogueur interactif qui vous permet de parcourir et de parcourir votre code en cours d'exécution. Pour commencer le débogage interactif, arrêtez votre application si elle est en cours d'exécution. Dans la barre de menus principale, cliquez sur Run - Debug App.

Note 

Exécuter l’application en mode débogage n’est pas le seul moyen de déboguer l’application. Vous pouvez également attacher le processus de débogage dans une application en cours d'exécution. Il existe des situations où cette seconde technique est utile; Par exemple, lorsque le bogue que vous essayez de résoudre survient dans des conditions très spécifiques, vous pouvez exécuter l'application pendant un certain temps, puis, lorsque vous pensez être sur le point de commettre une erreur, vous pouvez joindre le débogueur. Une fois l'application démarrée en mode débogage, vous pouvez maintenant définir des points d'arrêt. Les points d'arrêt sont créés en cliquant sur la gouttière le long de la marge de l'éditeur (Figure 9-5). Les points d'arrêt peuvent être définis sur des lignes contenant des instructions exécutables. Vous pouvez commencer à ajouter des points d'arrêt dans les zones de votre code où vous n'êtes pas sûr de ce qui se passe. 

Figure 9-5. Debugger window

 

Lorsque vous définissez un point d'arrêt, une icône en forme de cercle rose apparaît dans la gouttière et la ligne entière est allumée en rose. À ce stade, votre application est déjà en cours d'exécution et, lorsque l'exécution arrive sur une ligne dans laquelle vous définissez un point d'arrêt, celle-ci devient bleue. À ce stade, la fenêtre du débogueur s'ouvre, l'exécution du programme est interrompue et AS3 entre en mode de débogage interactif. Lorsque vous êtes dans cet état, l'état de l'application est affiché dans la fenêtre de l'outil Débogage. Pendant ce temps, vous pouvez inspecter les valeurs des variables et même voir les threads en cours d'exécution dans l'application.Dans la fenêtre de surveillance (ou dans la vue des variables, illustrée à la Figure 9-5), vous pouvez ajouter une variable ou une expression à surveiller en cliquant sur le signe plus avec l'icône en forme de lunettes. Il y aura un champ de texte où vous pouvez entrer n'importe quelle expression Java valide. Lorsque vous appuyez sur Entrée, l'expression sera évaluée et vous pourrez voir le résultat de l'expression. Pour supprimer une expression surveillée, sélectionnez-la et cliquez sur l'icône de signe moins dans la fenêtre de surveillance.Pour reprendre l’exécution du programme, vous pouvez cliquer sur le bouton «Reprendre le programme» en haut de la barre d’outils du débogueur, alternativement; vous pouvez le faire aussi depuis la barre de menu principale , Run - Resume Program

Si vous souhaitez arrêter le programme avant qu'il ne se termine naturellement, vous pouvez cliquer sur le bouton «Arrêter l'application» dans la barre d'outils du débogueur: c'est l'icône du carré rouge. Alternativement, vous pouvez le faire aussi depuis la barre de menu principale, Run - Stop app.