Fehler in Anwendung beheben

Mit Cloud Code for IntelliJ lassen sich mühelos Fehler in ihren auf einem Kubernetes-Cluster bereitgestellten Anwendungen beheben. Sie können in einer Anwendung Fehler auf einem lokalen Cluster (z. B. Minikube oder Docker Desktop), GKE oder einem anderen Cloud-Anbieter beheben.

Außerdem müssen Sie sich beim Cloud Code-Debugging-Support keine Gedanken über eine manuelle Einrichtung machen, z. B. Portweiterleitung einrichten, Debugging-Back-End installieren oder sprachspezifische Debugging-Argumente rechts einfügen, um die Option zu aktivieren. Sie benötigen dazu nur eine Cloud Code-fähige Kubernetes-Anwendung, die eine Konfigurationsdatei skaffold.yaml enthält.

Debugging

Klicken Sie auf die Debug-Aktion für Develop on Kubernetes Symbol für Ausführungsaktion, um den Entwicklungszyklus im Debug-Modus auf Ihrem Kubernetes-Cluster zu starten.

Kubernetes-Cluster-Entwicklungszyklus im Debug-Modus starten

Der kontinuierliche Entwicklungszyklus wird dann im Debug-Modus gestartet.

Wenn der Debugger hinzugefügt werden kann, hängt Cloud Code eine Debug-Sitzung an:

Kubernetes Debugger hinzugefügt

Sie können jetzt alle Aufgaben ausführen, die normalerweise beim Debuggen von lokalem Code anfallen, z. B. das Festlegen von Haltepunkten und das Durchlaufen von Code, mit dem zusätzlichen Vorteil des Debugging für einen Live-Kubernetes-Cluster:

Kubernetes Debugger-Sitzung

Klicken Sie zum Beenden der Debugging-Sitzung auf das Stopp-Symbol in der Ausführungskonfiguration für Develop on Kubernetes.

Konfigurationsdetails

Mit Cloud Code auf Basis von Skaffold können Sie Probleme bei der Fehlerbehebung konfigurieren. Mit Cloud Code können Sie Haltepunkte festlegen und Fehler in Remote-Anwendungen beheben, die in Containern für die folgenden Sprachen ausgeführt werden:

Java

Cloud Code fügt automatisch die Umgebungsvariable JAVA_TOOL_OPTIONS mit der entsprechenden JDWP-Konfiguration hinzu, um die Fehlerbehebung zu aktivieren. Wenn bereits vorhanden, verwendet Cloud Code die in JAVA_TOOL_OPTIONS angegebenen Einstellungen.

Node.js

Je nach Struktur Ihrer Anwendung und ihrer Image-Build-Konfiguration müssen Sie möglicherweise helfen, dass der Debugger Ihre lokalen Quellen den Remotequellen im Container zuordnet. Dadurch kann der Node.txt-Debugger Ihre Haltepunkte ordnungsgemäß verarbeiten.

Dafür gibt es zwei Möglichkeiten:

  1. Manuelle Konfiguration

    Wählen Sie im Drop-down-Menü "Ausführungskonfiguration für Kubernetes" die Option "Konfigurationen bearbeiten" aus. Konfigurieren Sie im Tab "Debugging" die Quellzuordnung von Ihrer lokalen Anwendungsquelle zum Quellspeicherort im Remote-Container.

    Quellort im Bereich

    Konfigurationsoptionen:

    • Datei/Verzeichnis: Die lokale Datei oder das lokale Verzeichnis Ihrer Anwendung, die auf Kubernetes ausgeführt wird.
    • Remote Path: Der Pfad zur Datei oder dem Verzeichnis, die im Container in Kubernetes ausgeführt werden.
  2. Automatische Konfiguration

    Sie können diese Zuordnung zu Cloud Code aufheben. Wenn Sie die Fehlerbehebungssitzung starten, versucht Cloud Code, diese Zuordnung automatisch abzuleiten. Er wird in einem Dialogfeld angezeigt. Ein Dialogfeld für jedes Artefakt, das Sie debuggen.

    Remote-Pfadzuordnungsdialog für jedes Artefakt, das den verwendeten Remote-Pfad angibt

    Konfigurationsoptionen:

    • Lokaler Pfad: der lokale Pfad zum Stammverzeichnis des Artefakts, für das Sie eine Fehlerbehebung durchführen
    • Remote Path: Der Pfad zur Datei oder dem Verzeichnis, die im Container in Kubernetes ausgeführt werden. Sie können diese Einstellung mit einem eigenen Wert überschreiben. Wenn Sie Cancel erreichen, wird keine Zuordnung angewendet.

Go

Damit Ihre Anwendung für die Fehlerbehebung konfiguriert werden kann, muss sie folgende Voraussetzungen erfüllen:

  • Eine auf dem Go Module basierende Anwendung
  • Sie werden als Go-basiert identifiziert, indem Sie im Container eine der standardmäßigen Go-Laufzeitumgebungsvariablen festlegen, z. B. GODEBUG, GOGC, GOMAXPROCS oder GOTRACEBACK. GOTRACEBACK=single ist die Standardeinstellung für Go und GOTRACEBACK=all eine allgemeine nützliche Konfiguration.

Optional (aber empfohlen) sollte Ihre Anwendung mit den -gcflags='all=-N -l'-Optionen erstellt werden, um Optimierungen zu deaktivieren. Skaffold-Profile sind für diesen Zweck nützlich und können in Ihrer Ausführungskonfiguration auf dem Tab "Build/Deploy" mit dem Feld "Deployment Profile" festgelegt werden.

Weitere Informationen finden Sie in der Skaffold-Debug-Dokumentation.

Support

Wenn Sie uns Feedback geben möchten, können Sie Probleme auf GitHub melden oder eine Frage in Stack Overflow stellen.