Esaminare gli oggetti nei checkpoint
Obiettivi di apprendimento
- Impostare checkpoint nel codice Apex.
- Analizzare gli oggetti in memoria usando Checkpoint Inspector (Controllo checkpoint).
Impostare checkpoint nel codice Apex
Se l'astronave rileva errori di sistema, bisogna mettere subito mano ai registri per capire qual è il problema e dove si è verificato.
Analogamente, quando il codice Apex genera errori, non funziona in modo ottimale o non produce i risultati desiderati, la prima azione da compiere è identificare il problema usando il registro di debug. Ispezionare il registro linea per linea è un compito noioso. È qui che i checkpoint vengono in aiuto. I checkpoint mostrano in tempo reale quello che succede in determinati punti del codice Apex durante l'esecuzione.
È possibile impostare fino a cinque checkpoint nel codice Apex. I checkpoint non sono disponibili per il markup di Visualforce.
EmailMissionSpecialist
che abbiamo creato prima.- Seleziona File | Open (Apri) e apri la classe
EmailMissionSpecialist
. - Seleziona Debug | Change Log Levels (Cambia livelli di registro).
- Nella sezione General Trace Settings for You (Impostazioni generali di tracciamento per te), fai clic su Add/Change (Aggiungi/Cambia).
- Imposta il livello di registro
ApexCode
su FINEST (Più dettagliato).
Nota: per impostare i checkpoint, è necessaria l'autorizzazione utente Visualizza tutti i dati. Per generare risultati usando i checkpoint, esegui il codice usando Execute Anonymous (Esegui come anonimo) o imposta un flag di traccia DEVELOPER_LOG. Il flag di traccia deve avere un livello di registro per Apex con valore INFO o superiore. - Per salvare le modifiche, fai clic su Done (Chiudi).
- Per uscire dalla finestra di dialogo Change Log Levels (Cambia livelli di registro), fai clic su Done (Chiudi).
Quando il codice viene visualizzato nell'editor di codice sorgente, a sinistra appaiono i numeri di riga. Fai clic sul numero di riga corrispondente a inspectResults(results);
. Appare un punto rosso (1), che indica che è stato creato un checkpoint.
Ora è possibile eseguire il codice e analizzarlo tramite la scheda Checkpoints.
Scheda Checkpoints
La scheda Checkpoints mostra con precisione gli errori di esecuzione del codice e i valori degli oggetti in quei punti. Eseguiamo questo codice per vedere il checkpoint in azione.
Seleziona Debug | Open Execute Anonymous Window (Apri finestra Esegui come anonimo). Inserisci ed esegui il seguente codice. Assicurati di sostituire Enter your email address (Inserisci indirizzo email) con il tuo indirizzo email.
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.');
Dopo aver eseguito correttamente il codice Apex, apri il registro di debug e fai clic sulla scheda Checkpoints per vedere i risultati.
- Nella tabella Checkpoints sono riportati lo spazio dei nomi, la classe e il numero di riga di ciascun checkpoint. La tabella indica inoltro la data e l'ora di creazione di ogni checkpoint.
- Nella tabella Checkpoint Locations (Posizioni checkpoint) sono riportati il nome del file, il numero di riga e le iterazioni acquisite dal checkpoint selezionato.
Fai doppio clic su un checkpoint nella tabella Checkpoints per visualizzare i risultati acquisiti in Checkpoint Inspector (Controllo checkpoint). Ora inizia il divertimento!
Checkpoint Inspector (Controllo checkpoint)
- Heap: mostra tutti gli oggetti presenti in memoria sulla riga di codice in cui è stato eseguito il checkpoint.
- Symbols (Simboli): mostra tutti i simboli in memoria nella visualizzazione struttura.
Scheda Heap
- In Types (Tipi), fai clic su
Messaging.SingleEmailMessage
. - In Instances (Istanze), fai clic su qualsiasi istanza di questo tipo di oggetto.
- In State (Stato), visualizza i campi dell'oggetto e i loro valori.
Scheda Symbols (Simboli)
La scheda Symbols (Simboli) è un modo semplice e veloce per esaminare gli stati dei vari oggetti in qualsiasi checkpoint. I simboli sono nomi univoci che fanno riferimento a determinati oggetti. La scheda mostra tutti i simboli in memoria che usano la visualizzazione struttura.
- Per cancellare i risultati dei checkpoint dalla scheda, seleziona Debug | Clear (Cancella) | Checkpoint Results Panel (Riquadro risultati checkpoint).
- Seleziona Debug | Open Execute Anonymous Window (Apri finestra Esegui come anonimo).
- Riesegui la classe
EmailMissionSpecialist
, questa volta con un indirizzo email non valido, ad esempio 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.');
- Dopo aver eseguito il codice, fai clic sulla scheda Checkpoints.
La scheda Checkpoints non mostra alcun risultato, perché l'esecuzione del codice non ha raggiunto il numero di riga in cui è stato impostato il checkpoint.
- Seleziona File | Open (Apri) e apri la classe
EmailMissionSpecialist
. - Fai clic sul numero di riga a sinistra per
String[] toAddresses = new String[] {address}
. - Seleziona Debug | Clear (Cancella) | Checkpoint Results Panel (Riquadro risultati checkpoint).
- Seleziona Debug | Open Execute Anonymous Window (Apri finestra Esegui come anonimo).
- Riesegui la classe
EmailMissionSpecialist
con un indirizzo email non valido, ad esempio 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.');
- Fai clic sulla scheda Checkpoints.
Apparirà una nuova voce nella scheda Checkpoints. Ora è possibile analizzare gli oggetti in memoria usando Checkpoint Inspector (Controllo checkpoint).