Cloud Run-Dienst in Cloud Code for Cloud Shell debuggen
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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 das Einrichten der Portweiterleitung oder das Einfügen von sprachspezifischen Debug-Argumenten vornehmen. Für das Debuggen ist eine Cloud Code-fähige Cloud Run-Anwendung erforderlich, die eine skaffold.yaml-Konfigurationsdatei und eine launch.json-Datei vom Typ cloudcode.cloudrun enthält.
Cloud Run-Dienst debuggen
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: Wenn Sie Umgebungsvariablen angeben möchten, klicken Sie auf Erweiterte Diensteinstellungen anzeigen, dann auf Umgebungsvariablen und geben Sie dann die Werte an.
Optional: Wenn Sie Cloud SQL-Verbindungen angeben möchten, klicken Sie auf Verbindungen und geben Sie dann eine Verbindung pro Zeile an.
Wenn Sie die Ausführung Ihres Diensts weiter anpassen möchten, können Sie die Datei launch.json direkt bearbeiten.
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.
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:
Logs ansehen:Öffnen Sie die Anwendungslogs einer bestimmten Bereitstellung mit dem Cloud Code Log-Explorer.
URL öffnen:Öffnen Sie die Anwendungsdienst-URL eines bestimmten Dienstes in einem Webbrowser.
Wenn Sie den Überwachungsmodus in der Startkonfiguration deaktiviert haben und Sie Änderungen an Ihrer Anwendung vornehmen und die Anwendung neu erstellen und noch einmal bereitstellen möchten, klicken Sie auf die Cloud Code-Statusleiste und dann auf Überwachungsmodus aktivieren.
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 der Fehlercode BUILD_DOCKER_UNKNOWN angezeigt wird, liegt ein Problem mit Docker vor. Führen Sie einen oder mehrere der folgenden Schritte aus, um dieses Problem zu beheben:
Starten Sie Docker neu und versuchen Sie noch einmal, den Container zu erstellen.
Wenn der Fehler nach dem Neustart weiterhin auftritt, ist möglicherweise der Speicherplatz von Docker aufgebraucht. Weitere Informationen zum Bereinigen nicht verwendeter Objekte in Docker finden Sie unter Nicht verwendete Docker-Objekte bereinigen.
Mit der Docker-Erweiterung Laufwerknutzung können Sie Speicherplatz freigeben.
Konfigurationsdetails
Cloud Code verarbeitet die folgenden sprachspezifischen Konfigurationsdetails:
Node.js
Neuschreiben des Einstiegspunkts, der aufgerufen werden soll:
node --inspect=localhost:9229
Python
Installieren Sie das ptvsd-Modul mithilfe eines Init-Containers und schreiben Sie den Einstiegspunkt für den Aufruf neu:
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:
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:
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-11 (UTC)."],[[["\u003cp\u003eCloud Code for Cloud Shell simplifies debugging Cloud Run applications by utilizing \u003ccode\u003eskaffold debug\u003c/code\u003e, eliminating the need for manual port forwarding or language-specific debug argument setups.\u003c/p\u003e\n"],["\u003cp\u003eDebugging a Cloud Run service involves using the "Debug on Cloud Run Emulator" command, configuring build and service settings, and then initiating the debug process.\u003c/p\u003e\n"],["\u003cp\u003eCloud Code automatically redeploys the application and establishes a new debug session whenever changes are autosaved, which can be toggled via the 'watch' flag.\u003c/p\u003e\n"],["\u003cp\u003eCloud Code manages language-specific debugging configurations, such as entry point rewrites and debugger installations, for Node.js, Python, Go, Java, and .NET Core applications.\u003c/p\u003e\n"],["\u003cp\u003eIf you get the 'BUILD_DOCKER_UNKNOWN' error, it is an issue with Docker that can be solved by restarting docker, pruning unused objects, or by using the disk usage extension.\u003c/p\u003e\n"]]],[],null,["# Debug a Cloud Run service in Cloud Code for Cloud Shell\n\nCloud Code for Cloud Shell lets you easily debug an application deployed to\nCloud Run by leveraging\n[`skaffold debug`](https://skaffold.dev/docs/workflows/debug). For detailed\ninformation about Skaffold debugging, see\n[Debugging with Skaffold](https://skaffold.dev/docs/workflows/debug/).\n\nYou don't need to complete manual setup like setting up port forwarding or\ninjecting language-specific debug arguments. Debugging requires a\nCloud Code-ready Cloud Run application\nthat includes a `skaffold.yaml` configuration file and a `launch.json` file of\ntype `cloudcode.cloudrun`.\n\nDebug your Cloud Run service\n----------------------------\n\nTo debug your service, follow these steps:\n\n1. To run your service and attach a debugger session to it, open the\n command palette (press `Ctrl`/`Cmd`+`Shift`+`P` or click **View** \\\u003e\n **Command Palette** )\n and then run the **Debug on Cloud Run Emulator** command.\n\n2. In the Run/Debug on Cloud Run Emulator dialog, set the\n specifications for your configuration:\n\n - Choose Docker or Buildpacks as your builder and then specify your Dockerfile or Buildpack.\n - (Optional) To specify a Dockerfile target or build arguments, click **Show Advanced Build Settings** and then specify the target or arguments.\n - (Optional) To specify a custom service name, container image URL, container port, identity for the service to use, number of dedicated CPUs, or amount of memory to allocate to each container instance, click **Show Advanced Service Settings** and then specify the values.\n - (Optional) To specify any [environment variables](/code/docs/shell/develop-service#optional_customizing_your_configuration), click **Show Advanced Service Settings** , click **Environment Variables**, and then specify the values.\n - (Optional) To specify Cloud SQL connections, click **Connections** and then specify one connection per line.\n\n If you want to further customize how your service is run, you can edit\n [your `launch.json` file](/code/docs/shell/develop-service#customizing_an_existing_launchjson_configuration)\n directly.\n3. To begin debugging your service, click **Debug**.\n\n4. For each debuggable container in your service, confirm or enter the directory\n in the remote container where the program you'd like to debug is found.\n\n Alternatively, you can press `ESC` to skip debugging a container.\n\n Cloud Code attaches a debug session for each debuggable\n container in the service.\n\n\n By default, when a change to your application is autosaved,\n Cloud Code redeploys your application and sets up a new debug\n session. You can toggle this feature with the `watch` flag in your project's\n launch configuration.\n5. To add a breakpoint, click in the editor margin of the file you're debugging.\n\n Red filled circles signify active breakpoints and gray hollow circles\n signify disabled breakpoints.\n\n When you send a new request to your service, it pauses at the line you\n specified.\n6. After your session completes, right-click to use the following commands:\n\n - **View Logs:** Open the application logs of a specific deployment with the Cloud Code Logs Explorer\n - **Open URL:** Open the application service URL of a specific service in a web browser\n7. If you've turned off watch mode in your launch configuration and you want to\n make changes to your application and rebuild and redeploy the application,\n click the Cloud Code status bar and then click\n **Turn on watch mode**.\n\n8. If you want to inspect variables and stack info, use the\n [Debug Sidebar](https://code.visualstudio.com/Docs/editor/debugging).\n To interact with the debugging session, use the\n [Debug Console](https://code.visualstudio.com/Docs/editor/debugging#_debug-console-repl)\n in the bottom pane debugger.\n\n9. To stop your deployment, click the **Stop** button in the action bar for your\n current deployment.\n\n### Troubleshoot container-building issues\n\nIf you're getting the `BUILD_DOCKER_UNKNOWN` error code, this indicates a\nproblem with Docker. To resolve this issue, perform one or more of the following\ntasks:\n\n- Restart Docker and try building the container again.\n\n- If you're still getting the same error after restarting, Docker could be\n running out of disk space. To learn more about cleaning up unused objects in\n Docker, see [Prune unused Docker objects](https://docs.docker.com/config/pruning/#prune-unused-docker-objects).\n\n- Try Docker's [Disk Usage](https://hub.docker.com/extensions/docker/disk-usage-extension)\n extension to help reclaim space.\n\nConfiguration details\n---------------------\n\nCloud Code handles the following language-specific configuration\ndetails: \n\n### Node.js\n\nRewriting the entrypoint to invoke:\n\n`node --inspect=localhost:9229`\n\n### Python\n\nInstalling the `ptvsd` module using an Init Container and rewriting the\nentrypoint to invoke:\n\n`python -m ptvsd --host localhost --port 5678`\n\n### Go\n\nInstalling the\n[`dlv` debugger](https://github.com/go-delve/delve/blob/master/Documentation/usage/dlv.md)\nusing an Init Container and rewriting the entrypoint such that the launched\ndebug session runs with a debug server only (in headless mode), continues the\ndebugged process on start, accepts multiple client connections, and listens at\n`localhost:56268`:\n\n`dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, \u003capp\u003e --`\n\n### Java\n\nAdding an environment `JAVA_TOOLS_OPTIONS` with the appropriate Java Debug\nWire Protocol (JDWP) configuration such that the JDWP debugging agent listens\nfor a socket connection on port 5005 and allows the VM to begin executing\nbefore the debugger is attached:\n\n`jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y`\n\n### .NET\n\n.NET Core applications are configured to be deployed along with `vsdbg` for VS\nCode.\n\nIf you encounter problems with the automatic configuration, see\n[Detailed debugger configuration and setup](https://skaffold.dev/docs/workflows/debug/#detailed-debugger-configuration-and-setup)\nfor help troubleshooting."]]