Skip to main content

Esaminare gli oggetti nei checkpoint

Obiettivi di apprendimento

Al completamento di questa unità, sarai in grado di:
  • Impostare checkpoint nel codice Apex.
  • Analizzare gli oggetti in memoria usando Checkpoint Inspector (Controllo checkpoint).
Nota

Nota

Stai seguendo la formazione in italiano? Inizia la sfida in un Trailhead Playground in italiano e utilizza le traduzioni fornite tra parentesi per la navigazione. Per quanto riguarda i valori da inserire, copia e incolla solo quelli in lingua inglese, perché la convalida della sfida è basata sul fatto che i dati siano in inglese. Se non superi la sfida nella tua organizzazione italiana, ti consigliamo di (1) selezionare Stati Uniti per le impostazioni internazionali, (2) selezionare Inglese per la lingua seguendo le istruzioni riportate qui e, successivamente, (3) fare nuovamente clic sul pulsante "Controlla la sfida".

Visita il badge Trailhead nella tua lingua per informazioni dettagliate su come usufruire dell'esperienza Trailhead in altre lingue.

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.

Impostiamo un checkpoint nella classe EmailMissionSpecialist che abbiamo creato prima.
  1. Seleziona File | Open (Apri) e apri la classe EmailMissionSpecialist.
  2. Seleziona Debug | Change Log Levels (Cambia livelli di registro).
  3. Nella sezione General Trace Settings for You (Impostazioni generali di tracciamento per te), fai clic su Add/Change (Aggiungi/Cambia).
  4. 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.
  5. Per salvare le modifiche, fai clic su Done (Chiudi).
  6. 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.

Impostare 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.

Scheda Checkpoints
  • 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)

Checkpoint Inspector (Controllo checkpoint) contiene due schede: Heap e Symbols (Simboli).
  • 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

La scheda Heap include alcuni grandi riquadri per il debug, tra cui il riquadro Types (Tipi). In questo riquadro sono visualizzati gli oggetti per cui sono state create istanze e la memoria utilizzata in byte. Diamo un'occhiata ai dettagli ottenuti tramite il checkpoint impostato.
  1. In Types (Tipi), fai clic su Messaging.SingleEmailMessage.
  2. In Instances (Istanze), fai clic su qualsiasi istanza di questo tipo di oggetto.
  3. In State (Stato), visualizza i campi dell'oggetto e i loro valori.
La scheda Heap in Checkpoint Inspector (Controllo checkpoint)

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.

La scheda Symbols (Simboli) in Checkpoint Inspector (Controllo checkpoint)
Un comandante non deve solo controllare se i sistemi funzionano correttamente, ma anche rintracciare gli errori. Vediamo in che modo la funzione Checkpoint Inspector (Controllo checkpoint) può favorire la comprensione del codice.
  1. Per cancellare i risultati dei checkpoint dalla scheda, seleziona Debug | Clear (Cancella) | Checkpoint Results Panel (Riquadro risultati checkpoint).
  2. Seleziona Debug | Open Execute Anonymous Window (Apri finestra Esegui come anonimo).
  3. 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.');
  4. 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.

Risultati della scheda Checkpoints
Aggiungiamo un checkpoint nella parte iniziale nel codice, in modo da acquisire le informazioni nel nuovo checkpoint prima che il codice rilevi l'errore testingemail.
  1. Seleziona File | Open (Apri) e apri la classe EmailMissionSpecialist.
  2. Fai clic sul numero di riga a sinistra per String[] toAddresses = new String[] {address}.
  3. Seleziona Debug | Clear (Cancella) | Checkpoint Results Panel (Riquadro risultati checkpoint).
  4. Seleziona Debug | Open Execute Anonymous Window (Apri finestra Esegui come anonimo).
  5. 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.');
  6. Fai clic sulla scheda Checkpoints.

Apparirà una nuova voce nella scheda Checkpoints. Ora è possibile analizzare gli oggetti in memoria usando Checkpoint Inspector (Controllo checkpoint).

Risultati della scheda Checkpoints
Condividi il tuo feedback su Trailhead dalla Guida di Salesforce.

Conoscere la tua esperienza su Trailhead è importante per noi. Ora puoi accedere al modulo per l'invio di feedback in qualsiasi momento dal sito della Guida di Salesforce.

Scopri di più Continua a condividere il tuo feedback