Mit Cloud Code for Cloud Shell können Sie mithilfe von skaffold debug
ganz einfach Fehler in einer Anwendung beheben, die in Cloud Run bereitgestellt wurde. Ausführliche Informationen zum Skaffold-Debugging finden Sie unter Debugging mit Skaffold.
Sie müssen keine manuelle Einrichtung wie die Portweiterleitung oder
sprachspezifische Debugging-Argumente werden eingefügt. Für die Fehlerbehebung ist ein
Cloud Code-fähige Cloud Run-Anwendung
die eine skaffold.yaml
-Konfigurationsdatei und eine launch.json
-Datei mit
Geben Sie cloudcode.cloudrun
ein.
Fehler im Cloud Run-Dienst beheben
So beheben Sie Fehler in Ihrer Dienst:
Öffnen Sie zum Ausführen Ihres Dienstes und zum Anhängen einer Debugger-Sitzung die Befehlspalette. Drücken Sie dazu
Ctrl
/Cmd
+Shift
+P
oder klicken Sie auf Ansicht > Befehlspalette und führen Sie dann den Befehl Im Cloud Run-Emulator debuggen aus.Legen Sie im Dialogfeld „Ausführen/Debuggen im Cloud Run-Emulator“ die Spezifikationen für Ihre Konfiguration fest:
- Wählen Sie Docker oder Buildpacks als Builder aus und geben Sie dann das Dockerfile oder Buildpack an.
- Optional: Wenn Sie ein Dockerfile-Ziel oder Build-Argumente angeben möchten, klicken Sie auf Erweiterte Build-Einstellungen anzeigen und geben Sie das Ziel oder die Argumente an.
- Optional: Wenn Sie einen benutzerdefinierten Dienstnamen, eine Container-Image-URL, einen Containerport, die Identität des zu verwendenden Dienstes, die Anzahl der dedizierten CPUs oder die Größe des Arbeitsspeichers angeben möchten, der jeder Containerinstanz zugewiesen werden soll, klicken Sie auf Erweiterte Diensteinstellungen anzeigen und geben Sie die Werte an.
- Optional: Hier können Sie Umgebungsvariablen Klicken Sie auf Erweiterte Diensteinstellungen anzeigen und dann auf Umgebungsvariablen. und geben dann die Werte an.
- (Optional) Klicken Sie auf Verbindungen, um Cloud SQL-Verbindungen anzugeben. und geben dann eine Verbindung pro Zeile an.
Wenn Sie die Ausführung Ihres Dienstes weiter anpassen möchten, können Sie Ihre
launch.json
-Datei .Klicken Sie auf Fehlerbehebung, um mit der Fehlerbehebung Ihres Dienstes zu beginnen.
Bestätigen oder geben Sie für jeden debugfähigen Container in Ihrem Dienst das Verzeichnis im Remote-Container ein, in dem sich das Programm befindet, für das das Debugging durchgeführt werden soll.
Alternativ können Sie
ESC
drücken, um die Fehlerbehebung für einen Container zu überspringen.Cloud Code fügt für jeden debugfähigen Container in dem Dienst eine Debug-Sitzung hinzu.
Wenn eine Änderung an Ihrer Anwendung automatisch gespeichert wird, stellt Cloud Code Ihre Anwendung standardmäßig noch einmal bereit und richtet eine neue Debug-Sitzung ein. Sie können dieses Feature in der Startkonfiguration Ihres Projekts mit dem Flag
watch
ein- oder ausschalten.Klicken Sie zum Hinzufügen eines Haltepunkts in den Editorrand der Datei, für die das Debugging ausgeführt wird.
Rot ausgefüllte Kreise kennzeichnen aktive Haltepunkte, während graue leere Kreise deaktivierte Haltepunkte angeben.
Wenn Sie eine neue Anfrage an Ihren Dienst senden, wird er in der von Ihnen angegebenen Zeile pausiert.
Klicken Sie nach Abschluss der Sitzung mit der rechten Maustaste, um die folgenden Befehle zu verwenden:
- View Logs (Logs ansehen): Anwendungslogs eines bestimmten Bereitstellung mit dem Cloud Code-Log-Explorer
- Open URL (URL öffnen): Die Anwendungsdienst-URL einer bestimmten Dienst in einem Webbrowser
Wenn du den Uhrmodus in der Startkonfiguration deaktiviert hast und Änderungen an Ihrer Anwendung vornehmen und sie neu erstellen und bereitstellen, klicken Sie auf die Cloud Code-Statusleiste und dann auf Aktivieren Sie den Smartwatch-Modus.
In der Debugging-Seitenleiste können Sie Variablen und Stack-Informationen prüfen. Verwenden Sie die Debug Console im Debugger im unteren Bereich, um mit der Debugging-Sitzung zu interagieren.
Klicken Sie in der Aktionsleiste Ihrer aktuellen Bereitstellung auf die Schaltfläche Beenden, um die Bereitstellung zu beenden.
Probleme beim Erstellen von Containern beheben
Wenn Sie den Fehlercode BUILD_DOCKER_UNKNOWN
erhalten, weist dies auf ein
Probleme mit Docker auftreten. Führen Sie einen oder mehrere der folgenden Schritte aus, um das Problem zu beheben
Aufgaben:
Starten Sie Docker neu und versuchen Sie noch einmal, den Container zu erstellen.
Wenn Sie nach dem Neustart immer noch den gleichen Fehler erhalten, könnte Docker dass der Speicherplatz knapp wird. Weitere Informationen zum Bereinigen nicht verwendeter Objekte in Docker finden Sie unter Nicht verwendete Docker-Objekte bereinigen.
Probieren Sie die Laufwerksnutzung von Docker aus um Speicherplatz zurückzugewinnen.
Konfigurationsdetails
Cloud Code verarbeitet die folgende sprachspezifische Konfiguration Details:
Node.js
Neuschreiben des Einstiegspunkts, der aufgerufen werden soll:
node --inspect=localhost:9229
Python
Modul ptvsd
mit einem Init-Container installieren und den
aufzurufender Einstiegspunkt:
python -m ptvsd --host localhost --port 5678
Go
Installieren des dlv
-Debuggers mit einem Init-Container und Umschreiben des Einstiegspunkts, sodass die gestartete Fehlerbehebungssitzung nur mit einem Fehlerbehebungsserver (im monitorlosen Modus) den Debug-Prozess beim Start fortsetzt, mehrere Client-Verbindungen akzeptiert und unter localhost:56268
empfängt:
dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --
Java
Hinzufügen einer Umgebung JAVA_TOOLS_OPTIONS
mit der entsprechenden Java Debug Wire Protocol (JDWP)-Konfiguration, sodass der JDWP-Debugging-Agent eine Socket-Verbindung auf Port 5005 überwacht und die VM mit der Ausführung beginnen kann, bevor der Debugger angehängt wird:
jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y
.NET
.NET Core-Anwendungen sind so konfiguriert, dass sie zusammen mit vsdbg
für VS bereitgestellt werden
Code.
Informationen zu Problemen mit der automatischen Konfiguration finden Sie unter Detaillierte Debugger-Konfiguration und -Einrichtung .