Skip to main content
Rejoignez-nous lors de l'Ă©vĂ©nement TDX Ă  San Francisco ou sur Salesforce+ les 5 et 6 mars pour la confĂ©rence des dĂ©veloppeurs Ă  l'ère des agents IA. Inscrivez-vous dès maintenant.

Inspecter des objets aux points de contrĂ´le

Objectifs de formation

Une fois cette unitĂ© terminĂ©e, vous pourrez :
  • DĂ©finir des points de contrĂ´le dans votre code Apex.
  • Analyser les objets prĂ©sents dans la mĂ©moire Ă  l’aide de l’Inspecteur de points de contrĂ´le.
Remarque

Remarque

Vous souhaitez apprendre en français ? Commencez le dĂ©fi dans un Trailhead Playground en français et utilisez les traductions fournies entre crochets pour naviguer. Copiez et collez uniquement les valeurs en anglais, car les validations de dĂ©fi reposent sur les donnĂ©es en anglais. Si vous ne rĂ©ussissez pas le dĂ©fi dans votre organisation en français, nous vous recommandons (1) de dĂ©finir le paramètre rĂ©gional sur les États-Unis, (2) de dĂ©finir la langue sur l’anglais en suivant les instructions ici, puis (3) de cliquer Ă  nouveau sur le bouton « VĂ©rifier le dĂ©fi Â».

Consultez le badge Trailhead dans votre langue pour découvrir comment profiter de l’expérience Trailhead traduite.

DĂ©finir des points de contrĂ´le dans votre code Apex

Dès que votre vaisseau commence à émettre des erreurs système, vous devez vous ruer sur les journaux pour comprendre les défaillances et les localiser.

De mĂªme, quand votre code Apex gĂ©nère des erreurs, prĂ©sente des problèmes de performances ou ne produit pas les rĂ©sultats attendus, la première Ă©tape consiste Ă  identifier le problème Ă  l’aide du journal de dĂ©bogage. Rien de plus fastidieux que d’éplucher un journal complet ligne par ligne. C’est lĂ  que les points de contrĂ´le entrent en jeu. Les points de contrĂ´le fournissent des instantanĂ©s de ce qui se passe dans votre code Apex Ă  des points particuliers de son exĂ©cution.

Vous pouvez définir cinq points de contrôle dans votre code Apex. Les points de contrôle ne sont pas disponibles dans le balisage Visualforce.

Définissons un point de contrôle dans la classe EmailMissionSpecialist que nous avons créée plus tôt.
  1. SĂ©lectionnez File (Fichier) | Open (Ouvrir) et ouvrez la classe EmailMissionSpecialist.
  2. SĂ©lectionnez Debug (DĂ©bogage) | Change Log Levels (Modifier les niveaux de consignation).
  3. Dans la section General Trace Settings for You (Vos paramètres de suivi généraux), cliquez sur Add/Change (Ajouter/Modifier).
  4. Choisissez FINEST comme niveau de consignation pour ApexCode.
    Remarque : Pour dĂ©finir des points de contrĂ´le, vous aurez besoin de la permission utilisateur Voir toutes les donnĂ©es. Pour gĂ©nĂ©rer des rĂ©sultats en utilisant des points de contrĂ´le, exĂ©cutez du code avec l’exĂ©cution anonyme, ou dĂ©finissez un marqueur de suivi DEVELOPER_LOG sur vous-mĂªme. Le marqueur de suivi doit avoir un niveau de consignation pour Apex de INFO ou plus.
  5. Pour enregistrer vos modifications, cliquez sur Done (Terminé).
  6. Pour quitter la boîte de dialogue de modification des niveaux de consignation, cliquez sur Done (Terminé).

Quand votre code s'affiche dans l’éditeur de code source, les numéros de ligne s'affichent sur le côté gauche. Cliquez sur le numéro de la ligne inspectResults(results);. Le point rouge (1) qui apparaît indique qu’un point de contrôle a été créé.

DĂ©finir un point de contrĂ´le

Vous pouvez maintenant exécuter votre code et l’analyser à l’aide de l’onglet Checkpoints (Points de contrôle).

Onglet Checkpoints (Points de contrĂ´le)

Sous l’onglet Checkpoints (Points de contrôle), vous pouvez voir à quel moment exactement l’exécution de votre code déraille et quelles sont les valeurs des objets à ce point. Exécutons ce code pour voir le point de contrôle en action.

SĂ©lectionnez Debug (DĂ©bogage) | Open Execute Anonymous Window (Ouvrir la fenĂªtre d’exĂ©cution anonyme). Saisissez le code suivant, collez-le et exĂ©cutez-le. N’oubliez pas de remplacer Enter your email address par votre adresse e-mail.

EmailMissionSpecialist em = new EmailMissionSpecialist();
em.sendMail('Enter your email address', 'Flight Path Change', 
   'Mission Control 123: Your flight path has been changed to avoid collision '
   + 'with asteroid 2014 QO441.');

Après avoir bien exécuté le code Apex, ouvrez le journal de débogage et cliquez sur l’onglet Checkpoints (Points de contrôle) pour voir les résultats.

Onglet Checkpoints (Points de contrĂ´le)
  • Le tableau Checkpoints (Points de contrĂ´le) affiche l’espace de nommage, la classe et le numĂ©ro de ligne de chaque point de contrĂ´le. Il fournit Ă©galement la date et l’heure de crĂ©ation de chaque point de contrĂ´le.
  • Le tableau Checkpoint Locations affiche le nom de fichier, le numĂ©ro de ligne et les itĂ©rations captĂ©es par le point de contrĂ´le sĂ©lectionnĂ©.

Double-cliquez sur un point de contrĂ´le du tableau Checkpoints (Points de contrĂ´le) pour afficher les rĂ©sultats enregistrĂ©s dans l’inspecteur de points de contrĂ´le. C’est lĂ  que la fĂªte commence.

Inspecteur de points de contrĂ´le

L’inspecteur de points de contrĂ´le comprend deux onglets : Heap (MĂ©moire) et Symbols (Symboles).
  • Heap (MĂ©moire) : affiche tous les objets prĂ©sents dans la mĂ©moire au niveau de la ligne de code oĂ¹ le point de contrĂ´le a Ă©tĂ© exĂ©cutĂ©.
  • Symbols (Symboles) : affiche tous les symboles prĂ©sents dans la mĂ©moire sous forme d’arborescence.

Onglet Heap (MĂ©moire)

L’onglet Heap (Mémoire) abrite des panneaux très pratiques pour le débogage, comme le panneau Types. Ce panneau indique le nombre d’objets qui ont été instanciés et la mémoire qu’ils ont consommée en octets. Examinons les informations captées par le point de contrôle que vous avez défini.
  1. Sous Types, cliquez sur Messaging.SingleEmailMessage.
  2. Sous Instances, cliquez sur une instance quelconque de ce type d'objet.
  3. Sous State (État), vous trouverez les champs de l'objet ainsi que leurs valeurs.
L’onglet Heap (Mémoire) dans l’inspecteur de points de contrôle

Onglet Symbols (Symboles)

L’onglet Symbols (Symboles) est un moyen simple et rapide de connaître l'état de divers objets à un point de contrôle donné. Les symboles sont des noms uniques qui font référence à des objets spécifiques. L’onglet affiche tous les symboles présents dans la mémoire sous forme d’arborescence.

L’onglet Symbols (Symboles) dans l’inspecteur de points de contrôle
En tant que commandant, vous ne pouvez pas vous contenter de vĂ©rifier que les systèmes fonctionnent correctement : vous devez Ă©galement pourchasser les erreurs. Voyons comment l’inspecteur de points de contrĂ´le peut vous aider Ă  mieux comprendre votre code.
  1. Pour effacer les résultats d’un point de contrôle de l’onglet, sélectionnez Debug (Débogage) | Clear (Effacer) | Checkpoint Results Panel (Panneau des résultats des points de contrôle).
  2. SĂ©lectionnez Debug (DĂ©bogage) | Open Execute Anonymous Window (Ouvrir la fenĂªtre d’exĂ©cution anonyme).
  3. Exécutez à nouveau la classe EmailMissionSpecialist, mais fournissez-lui cette fois une adresse e-mail non valide comme testingemail.
    EmailMissionSpecialist em = new EmailMissionSpecialist();
    em.sendMail('testingemail', 'Flight Path Change', 
       'Mission Control 123: Your flight path has been changed to avoid collision '
       + 'with asteroid 2014 QO441.');
  4. Une fois que vous avez exécuté le code, cliquez sur l’onglet Checkpoints (Points de contrôle).

L’onglet Checkpoints (Points de contrôle) n'affiche aucun résultat parce que l’exécution de votre code n’a pas atteint le numéro de ligne auquel votre point de contrôle est défini.

Résultats de l’onglet Checkpoints (Points de contrôle)
Ajoutons un point de contrôle plus tôt dans le code afin de capturer des informations avant que notre code n’atteigne l’erreur testingemailerror.
  1. SĂ©lectionnez File (Fichier) | Open (Ouvrir) et ouvrez la classe EmailMissionSpecialist.
  2. Cliquez sur le numéro de ligne devant String[] toAddresses = new String[] {address}.
  3. Sélectionnez Debug (Débogage) | Clear (Effacer) | Checkpoint Results Panel (Panneau des résultats des points de contrôle).
  4. SĂ©lectionnez Debug (DĂ©bogage) | Open Execute Anonymous Window (Ouvrir la fenĂªtre d’exĂ©cution anonyme).
  5. Exécutez à nouveau la classe EmailMissionSpecialist en fournissant une adresse e-mail non valide comme testingemail.
    EmailMissionSpecialist em = new EmailMissionSpecialist();
    em.sendMail('testingemail', 'Flight Path Change', 
       'Mission Control 123: Your flight path has been changed to avoid collision '
       + 'with asteroid 2014 QO441.');
  6. Cliquez sur l’onglet Checkpoints (Points de contrôle).

Une nouvelle entrée est visible sous l’onglet Checkpoints (Points de contrôle). Vous pouvez désormais analyser les objets présents dans la mémoire à l’aide de l’Inspecteur de points de contrôle.

Résultats de l’onglet Checkpoints (Points de contrôle)

DĂ©fi pratique

+ 500 points

Préparez-vous

Vous allez effectuer ce(tte) unité dans votre propre organisation pratique. Cliquez sur Lancer pour commencer ou cliquez sur le nom de votre organisation pour en choisir une autre.

Votre défi

Set Checkpoints to Find Errors in Your Code

Set a checkpoint in the EmailMissionSpecialist class. Then execute the class and analyze the objects logged at the checkpoint.

Pre-Work
Make sure that line 12 of your EmailMissionSpecialist Apex class contains this code:
Messaging.SendEmailResult[] results = Messaging.sendEmail(

If it doesn't, replace the contents of EmailMissionSpecialist.apxc with the EmailMissionSpecialist class code provided in Unit 2: Navigate and Edit Source Code.

  • In the EmailMissionSpecialist class, set a checkpoint on line 12
  • Using your own email address, execute the EmailMissionSpecialist class in the Execute Anonymous window
  • Observe the checkpoint results and see the values of the objects in memory (we won’t check this)
Partagez vos commentaires sur Trailhead dans l'aide Salesforce.

Nous aimerions connaître votre expérience avec Trailhead. Vous pouvez désormais accéder au nouveau formulaire de commentaires à tout moment depuis le site d'aide Salesforce.

En savoir plus Continuer Ă  partager vos commentaires