Nachdem Sie das Debugging in Cloud Debugger eingerichtet und Ihre Anwendung bereitgestellt oder gestartet haben, können Sie in der Quellkonsole Debug-Snapshots erstellen oder ansehen.
Snapshots – Übersicht
Snapshots erfassen die lokalen Variablen und den Aufrufstack an einer bestimmten Zeilenposition im Quellcode Ihrer Anwendung. Sie können einen Snapshot des Status Ihrer Anwendung basierend auf den von Ihnen angegebenen Bedingungen und Zeilenpositionen zurückgeben. Die Snapshot-Details helfen Ihnen beim Debuggen Ihres Codes.
Wenige Sekunden nach dem Festlegen der Zeilenposition werden die Snapshot-Einstellungen auf alle laufenden Instanzen Ihrer Anwendung angewendet. Wenn eine Instanz den Code an der Snapshot-Position zum ersten Mal ausführt, erstellt Debugger einen Snapshot und stellt ihn für die Anzeige zur Verfügung. Debugger implementiert mehrere Strategien zur Minimierung der bei der Datenerfassung auftretenden Latenz.
Snapshots sind während des Starts möglicherweise nicht verfügbar, wenn der Debugger initialisiert wird.
Debugging-Snapshot aufnehmen
Öffnen Sie Cloud Source Repositories in der Google Cloud Console.
Cloud Source Repositories öffnen
Die Seite Alle Repositories wird geöffnet. Alternativ können Sie die Ansicht Meine Quelle öffnen.
Klicken Sie auf den Namen eines Repositorys und gehen Sie zu der Datei, die den Quellcode enthält, den Sie sich ansehen möchten.
Klicken Sie auf die Zeilennummer der Quellcode-Position.
Wählen Sie bei entsprechender Aufforderung die Anwendung aus, die Sie debuggen möchten, und klicken Sie dann auf Weiter.
Klicken Sie auf Snapshot erstellen.
Der neue Snapshot wird in einem angrenzenden Bereich der Google Cloud Console angezeigt.
Snapshot-Bedingungen (optional)
Eine Snapshot-Bedingung ist ein Ausdruck, der true
sein muss, damit der Snapshot erstellt wird. Es werden Ausdrücke in Java, Python und Go unterstützt.
Snapshot-Bedingungen werden jedes Mal ausgewertet, wenn eine Instanz die Zeile ausführt, bis die Bedingung true
ist oder für den Snapshot eine Zeitüberschreitung eintritt.
Die Bedingung ist ein vollständiger boolescher Ausdruck, der logische Operatoren enthalten kann:
travelAccessory == "Towel"
ultimateAnswer <= 42
travelAccessory == "Towel" && ultimateAnswer <= 42
Snapshot-Bedingung erstellen
Klicken Sie in der GCP Console auf den Tab Snapshots und wählen Sie einen Snapshot aus.
Klicken Sie nach dem Öffnen des Steuerfelds Snapshot auf Snapshot bearbeiten.
Geben Sie im Feld Bedingung die Snapshot-Bedingung ein.
Klicken Sie auf Aktualisieren.
Sie können die folgenden Sprachfunktionen verwenden, um Bedingungen auszudrücken:
Java
Die meisten Java-Ausdrücke werden unterstützt, darunter:- Lokale Variablen:
a == 8
. - Numerische und boolesche Vorgänge:
x + y < 20
. - Instanz- und statische Felder:
this.counter == 20
,this.myObj.isShutdown
,myStatic
odercom.mycompany.MyClass.staticMember
. - Stringvergleiche mit dem Gleichheitsoperator:
myString == "abc"
. - Funktionsaufrufe. Es können ausschließlich schreibgeschützte Funktionen genutzt werden. Beispiel:
StringBuilder.indexOf()
wird unterstützt,StringBuilder.append()
jedoch nicht. - Typstreaming mit voll qualifizierten Typen:
((com.myprod.ClassImpl) myInterface).internalField
.
Folgende Sprachfunktionen werden nicht unterstützt:
- Entfernen von numerischen Typen, z. B.
Integer
, verwenden Sie stattdessenmyInteger.value
.
Python
Die meisten Python-Ausdrücke werden unterstützt, darunter:- Lesen lokaler und globaler Variablen
- Lesen aus Arrays, Listen, Segmenten, Wörterbüchern und Objekten.
- Aufrufen einfacher Methoden
Folgende Sprachfeatures werden nicht unterstützt:
- Aufruffunktionen, die neue Objekte zuweisen oder komplexe Konstrukte verwenden
- Erstellen neuer Objekte innerhalb eines Ausdrucks
Go (Beta)
Die meisten Go-Ausdrücke werden unterstützt, darunter:- Lesen lokaler und globaler Variablen
- Lesen aus Arrays, Segmenten, Maps und Structs
Folgende Sprachfunktionen werden nicht unterstützt:
- Lesen aus Schnittstellenwerten
- Typumwandlungen und zusammengesetzte Literale
- Funktionsaufrufe außer
len
.
Ausdrücke (optional)
Mit Snapshot-Ausdrücken können Sie komplexe Ausdrücke auswerten oder Objekthierarchien durchsuchen, wenn ein Snapshot aufgenommen wurde. Bei den Ausdrücken werden die gleichen Sprachfunktionen unterstützt wie bei den vorstehend beschriebenen Snapshot-Bedingungen.
Hier sind typische Verwendungszwecke für Ausdrücke:
Aufrufen statischer oder globaler Variablen, die nicht Bestandteil des lokalen Variablensatzes sind
Aufrufen komplex verschachtelter Membervariablen, ohne jedes Mal eine lokale Variable im Debugger-Bereich aufschlüsseln zu müssen
Vermeiden wiederholter mathematischer Berechnungen Zum Beispiel durch Berechnung einer Zeitspanne in Sekunden mit
(endTimeMillis - startTimeMillis) / 1000.0
.
Ausdruck hinzufügen
Klicken Sie im unteren Bereich der GCP Console auf den Tab Snapshot und wählen Sie einen Snapshot aus.
Klicken Sie im angezeigten Steuerfeld auf Snapshot bearbeiten.
Geben Sie im Feld Ausdruck den Ausdruck ein.
Wenn Sie Ausdrücke hinzufügen möchten, drücken Sie die Tabulatortaste.
Klicken Sie auf Aktualisieren.
Snapshot ansehen
Snapshot-Daten werden in der Quellkonsole angezeigt, nachdem die Anwendung den Code an dem von Ihnen angegebenen Speicherort ausgeführt hat.
Klicken Sie im unteren Bereich der GCP Console auf den Tab Snapshot und wählen Sie einen Snapshot aus.
In einem Steuerfeld mit Snapshot-Details werden die Werte der Instanzvariablen und der Stacktrace am Speicherort des Snapshot-Codes angezeigt.
Sobald der Snapshot aufgenommen wurde, können Sie sofort die Werte der lokalen Variablen prüfen und die tieferen Datenstrukturen genau untersuchen. Außerdem können Sie auf den Frame eines beliebigen Aufrufstacks klicken, um die lokalen Variablen auf der jeweiligen Stackebene zu analysieren.
Snapshot noch einmal aufnehmen
Ein Snapshot wird nur einmal aufgenommen. So erstellen Sie einen weiteren Snapshot Ihres Anwendungsstatus am selben Speicherort:
Halten Sie im Steuerfeld Snapshot der GCP Console den Mauszeiger über den Snapshot.
Klicken Sie auf Neu erstellen.
Snapshot-Position löschen
Halten Sie im Steuerfeld Snapshot der GCP Console den Mauszeiger über den Snapshot.
Klicken Sie auf Löschen delete.
Snapshots teilen
Sie können einen Snapshot teilen, indem Sie die Snapshot-URL aus Ihrem Browser teilen. Sie können diese URL auch zur späteren Verwendung speichern und später noch einmal aufrufen, um ihre Ergebnisse anzusehen. Debugger erstellt für jeden aufgenommenen Snapshot eine neue URL. So lassen sich spezielle Ergebnismengen teilen, auch wenn sie an derselben Stelle im Code erfasst wurden.