Debugging und Diagnosen
Lernziele
Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
- Verstehen, welche Debug-Funktionen auf der Lightning-Plattform zur Verfügung stehen
- Untersuchen von Debug-Protokollen mithilfe des Log Inspectors in der Entwicklerkonsole
Mit Trail Together einem Dozenten folgen
Möchten Sie bei diesem Schritt einem Experten folgen? Schauen Sie sich dieses Video an, das Teil der Reihe "Trail Together" ist.
(Dieser Clip beginnt bei Minute 40:30, für den Fall, dass Sie zurückspringen und den Anfang des Schritts noch einmal sehen möchten.)
Ein Schritt zurück
Wir wollen gar nicht versuchen, Ihnen weiszumachen, dass das Debuggen auf der Lightning-Plattform genauso einfach ist wie in Visual Studio. Um ganz ehrlich zu sein: Es ist überhaupt nicht zu vergleichen. Das Debuggen in einer mandantenfähigen Cloud-Umgebung stellt uns vor einzigartige Herausforderungen. Das bedeutet nicht, dass Sie auf der Lightning-Plattform nicht debuggen oder diagnostisch arbeiten können. Es bedeutet einfach, dass das Debuggen ganz anders ist als das, was Sie bislang kannten. Die gute Nachricht ist, dass Salesforce in diesem Bereich in der jüngeren Vergangenheit enorme Fortschritte gemacht hat, zu denen mit jeder Version neue hinzukommen.
Ihr Freund, das Debug-Protokoll
In der Welt der Lightning-Plattform ist das Debug-Protokoll der Ort, an dem Sie das meiste finden, das Sie zum Debuggen und zum Analysieren Ihres Codes benötigen. Sie haben bereits gelernt, wie Sie Einträge in das Debug-Protokoll vornehmen können. Das geschieht in etwa in der folgenden Weise.
System.debug('My Debug Message');
Sie können außerdem eine der folgenden Protokollierungsebenen festlegen.
- NONE
- ERROR
- WARN
- INFO
- DEBUG
- FINE
- FINER
- FINEST
Diese Ebenen reichen vom niedrigsten bis zum höchsten Wert und sind kumulativ. Wenn Sie also die genaueste Ebene auswählen, werden alle Meldungen angezeigt, die als Fehler, Warnung, Info etc. protokolliert worden sind. Ferner gibt es verschiedene Debug-Protokollkategorien; wie viele Informationen protokolliert werden, hängt von der Protokollebene ab. Erfahren Sie mehr über das Debuggen bei unterschiedlichen Benutzern, indem Sie auf die Links im Abschnitt 'Ressourcen' klicken.
Und warum müssen Sie all dies unbedingt wissen?
Sie haben schon so einiges über Grenzen gehört; Grenzen aber auch zu verstehen, ist für Ihren Erfolg entscheidend. Also haben Sie noch ein wenig Geduld! Ein Debug-Protokoll darf jeweils maximal 20 MB umfassen. Wenn es größer ist, wird nicht alles angezeigt, was Sie benötigen. Außerdem kann jede Organisation kann Debug-Protokolle im Umfang von bis zu 1.000 MB speichern. Die ältesten Protokolle werden überschrieben.
Da Debug-Protokolle Ihre primäre Quelle für Debug-Informationen über Ihre Anwendung sind, sollten Sie diese Grenzen auf keinen Fall überschreiten. Wenn Ihnen niemals eine Fehlermeldung angezeigt wird, können Sie auch nichts dagegen unternehmen. Schauen Sie sich die Links im Abschnitt 'Ressourcen' zu den Themen 'Erweitertes Apex-Debuggen' und 'Bewährte Vorgehensweisen' an, um Hinweise dazu zu erhalten, wie diese Probleme zu vermeiden sind.
Verwenden des Protokollinspektors
Die Entwicklerkonsole ist im Verlauf der letzten Versionen ganz schön gewachsen. Zu ihren nützlichsten Funktionen zählt der Protokollinspektor. Schauen wir uns die Ausführung von anonymem Code und die Anzeige der Ergebnisse an, um zu sehen, wie er funktioniert.
- Wählen Sie unter 'Setup' Ihr Name > Developer Console aus, um die Developer Console zu öffnen.
- Wählen Sie Debug > Change Log Levels aus.
- Klicken Sie unter 'General Trace Setting for You' auf den Link Add/Change.
- Wählen Sie als Debugebene für alle Spalten INFO aus.
- Klicken Sie auf Fertig.
- Klicken Sie auf Fertig.
- Wählen Sie Debug > Perspective Manager aus.
- Wählen Sie All (Predefined) aus und klicken Sie auf Set Default.
- Klicken Sie auf Ja, um diese Perspektive zu ihrer Standardperspektive zu machen.
- Schließen Sie das Fenster 'Developer Console Perspective'.
- Klicken Sie auf Debug > Open Execute Anonymous Window.
- Löschen Sie den vorhandenen Code und fügen Sie den folgenden Ausschnitt ein:
System.debug(LoggingLevel.INFO, 'My Info Debug Message'); System.debug(LoggingLevel.FINE, 'My Fine Debug Message'); List<Account> accts = [SELECT Id, Name FROM Account]; for(Account a : accts) { System.debug('Account Name: ' + a.name); System.debug('Account Id: ' + a.Id); }
- Stellen Sie sicher, dass Open Log ausgewählt ist, und klicken Sie auf Execute.
- Wählen Sie Debug > Switch Perspective > All (Predefined) aus.
- Schauen Sie sich die Ergebnisse auf den Registerkarten 'Timeline' und 'Executed Units' an.
- Wählen Sie unter 'Execution Log' die Option Filter aus und geben Sie FINE ein. Da wir die Debugebene für den Apex-Code auf INFO gesetzt haben, werden keine Ergebnisse angezeigt.
- Wählen Sie Debug > Change Log Levels aus.
- Klicken Sie unter 'General Trace Setting for You' auf den Link Add/Change.
- Ändern Sie 'DebugLevel for ApexCode and Profiling' in FINEST.
- Klicken Sie auf Fertig.
- Klicken Sie auf Fertig.
- Klicken Sie auf Debug > Open Execute Anonymous Window.
- Lassen Sie den dort vorhandenen Code stehen und klicken Sie auf Execute.
- Wählen Sie unter 'Execution Log' die Option Filter aus und geben Sie FINE ein. Bei der Filtersuche wird zwischen Groß- und Kleinschreibung unterschieden. Daraufhin wird 'My Fine Debug Message' angezeigt. Bitte beachten Sie auf der Registerkarte 'Logs' auch die Größendifferenz zwischen den beiden neuesten Protokollen.
Einstellen von Prüfpunkten
Als .NET-Entwickler sind Sie daran gewöhnt, in Ihren Anwendungen Haltepunkte festzulegen. In einer cloud-basierten, mandantenfähigen Umgebung, in der jeder Ressourcen freigibt, ist es jedoch fatal, wenn jeder Ausführungen anhalten und Datenbankverbindungen offen halten darf.
Prüfpunkte sind Haltepunkten insofern ähnlich, als sie viele detaillierte Informationen zur Ausführung von Codezeilen anzeigen. Sie unterbrechen die Ausführung nur nicht in der betreffenden Zeile.
Um zu sehen, wie sie funktionieren, schauen wir uns einmal die Festlegung eines Prüfpunkts auf einer Codezeile an, die Sie in einer früheren Einheit erstellt haben, in der es um das Verständnis des Ausführungskontextes ging. Wenn Sie den Handler- und den Auslösercode für den AccountTrigger nicht erstellt haben, gehen Sie zu dieser Lektion zurück und schließen den betreffenden Abschnitt ab, bevor Sie fortfahren.
- Wählen Sie unter 'Setup' Ihr Name > Developer Console aus, um die Developer Console zu öffnen.
- Wählen Sie File > Open aus.
- Wählen Sie als Einheitentyp Classes und als Einheit AccountHandler aus.
- Klicken Sie auf Open (Öffnen).
- Positionieren Sie den Cursor auf Zeile 10 am linken Rand und klicken Sie einmal. Neben der Zeilenzahl wird ein roter Punkt angezeigt.
- Doppelklicken Sie im Protokollbereich auf den letzten Eintrag, um das Debug-Protokoll zu öffnen.
- Klicken Sie auf Debug > Open Execute Anonymous Window.
- Löschen Sie den vorhandenen Code und fügen Sie den folgenden Ausschnitt ein:
Account acct = new Account( Name='Test Account 3', Phone='(415)555-8989', NumberOfEmployees=30, BillingCity='San Francisco'); insert acct;
- Stellen Sie sicher, dass Open Log ausgewählt ist, und klicken Sie auf Execute.
- Klicken Sie auf die Registerkarte Checkpoints, und doppelklicken Sie auf den ersten Eintrag, der angezeigt wird. Der Checkpoint Inspector wird angezeigt.
- Erweitern Sie auf der Registerkarte 'Symbols' die Knoten in der Ausführungsstruktur. Beachten Sie die Spalten 'Key' und 'Value'.
- Klicken Sie auf die Registerkarte Heap. Beachten Sie die Spalten 'Count' und 'Total Size'.
Nächste Schritte
Jetzt, da Sie eine Vorstellung von den Apex-Grundlagen haben, sind Sie bereit, Ihre Reise durch Salesforce fortzusetzen. Wechseln Sie hinüber zu unserem Trail Entwickler – Anfänger, um Ihre bereits vorhandenen Entwicklerfähigkeiten zum schnellen Erstellen von Anwendungen in der Salesforce Platform einzusetzen.
Ressourcen
- Debug Log im Apex Code Developer’s Guide
- Working with Logs im Apex Code Developer’s Guide
- Beispiele für die Verwendung des Log Inspectors
- Festlegen von Prüfpunkten in Apex-Code