Verwenden Sie unsere experimentelle Funktion, um eine Debugsitzung in Chrome DevTools zu öffnen und serverseitige Geschäftsobjekte debuggen zu können.
Verwenden Sie alle bekannten Funktionen wie Haltepunkte und Watchpoints, um das Debuggen Ihres Codes in vollem Umfang zu genießen.
Vorbereitung der Einrichtung
Stellen Sie sicher, dass Ihr Reverseproxy korrekt konfiguriert ist, um TLS auch für den verfügbar gemachten Debug-Port zu beenden und Anforderungs- und Websocket-Verbindungen an den internen Debug-Port weiterzuleiten.
Auf lokal ausgeführten Instanzen sollten Sie in der Lage sein, das Debuggen von serverseitigen Business Objekten direkt zu verwenden.
Hinzufügen von Variablen zu Ihrer .env-Datei
Fügen Sie die erforderlichen Variablen zu Ihrer vorhandenen .env-Datei hinzu
# Variables for the SSBO Debugging # The Simplifier Host should be sufficient as a default DEBUG_CHROME_DEV_TOOLS_EXPOSED_HOST=${SIMPLIFIER_HOSTNAME} DEBUG_CHROME_DEV_TOOLS_PORT=2992 # The exposed port is usually the same as the internal port DEBUG_CHROME_DEV_TOOLS_EXPOSED_PORT=${DEBUG_CHROME_DEV_TOOLS_PORT} # Determines whether the dev-tools link protocol (true will deliver wss, false or anything else will deliver ws) DEBUG_CHROME_DEV_TOOLS_USE_EXTERNAL_TLS=true #Feature Flags FEATURE_SSBO_JS_DEBUGGING=true
Die Variablen werden in der folgenden Tabelle erläutert:
Variable | Beschreibung | Standardwert |
---|---|---|
FEATURE_SSBO_JS_DEBUGGING |
(de-)aktiviert das Debuggen von serverseitigen Business Objekten [true | false] |
FALSCH |
DEBUG_CHROME_DEV_TOOLS_EXPOSED_HOST |
Host, der zum Herstellen einer Verbindung über Chrome DevTools verwendet werden soll |
127.0.0.1 |
DEBUG_CHROME_DEV_TOOLS_PORT |
Port, der für die Verbindung von Chrome DevTools verwendet wird |
2992 |
DEBUG_CHROME_DEV_TOOLS_EXPOSED_PORT |
Port, der im bereitgestellten Link zum Öffnen der Debugger-Sitzung in Chrome DevTools verwendet wird Achtung: Nur verwenden, wenn der interne Port nicht für den Zugriff über Chrome DevTools geöffnet ist |
9229 |
DEBUG_CHROME_DEV_TOOLS_USE_EXTERNAL_TLS |
Ermitteln, ob der Chrome-Debugger eine Verbindung über WS (Websocket) oder WSS (Websocket Secure) herstellt |
STIMMT |
Bereiten Sie Ihre Docker-Compose-Datei vor
Fügen Sie dem Vereinfachungscontainer in der docker-compose.yml Datei die folgenden Bezeichnungen hinzu
- DEBUG_CHROME_DEV_TOOLS_EXPOSED_HOST=${DEBUG_CHROME_DEV_TOOLS_EXPOSED_HOST} - DEBUG_CHROME_DEV_TOOLS_EXPOSED_PORT=${DEBUG_CHROME_DEV_TOOLS_EXPOSED_PORT} - DEBUG_CHROME_DEV_TOOLS_PORT=${DEBUG_CHROME_DEV_TOOLS_PORT} - DEBUG_CHROME_DEV_TOOLS_USE_EXTERNAL_TLS=${DEBUG_CHROME_DEV_TOOLS_USE_EXTERNAL_TLS} - FEATURE_SSBO_JS_DEBUGGING=true
Fügen Sie dem traefik-Proxy-Container in der docker-compose.yml Datei die folgenden Labels hinzu
# Second Router - "traefik.tcp.routers.ws-debugging.rule=HostSNI(`*`)" - "traefik.tcp.routers.ws-debugging.entrypoints=debugging" - "traefik.tcp.routers.ws-debugging.tls=true" - "traefik.tcp.routers.ws-debugging.service=ws-debugging" # Services # This is required in order to let Chrome Dev-Tools connect to Simplifier - "traefik.tcp.services.ws-debugging.loadbalancer.server.port=${DEBUG_CHROME_DEV_TOOLS_EXPOSED_PORT}"
Fügen Sie die folgenden Befehle zum traefik-Proxy-Container in der docker-compose.yml-Datei hinzu
- --entrypoints.debugging.address=:${DEBUG_CHROME_DEV_TOOLS_EXPOSED_PORT} - --entryPoints.debugging.transport.respondingTimeouts.readTimeout=60 - --entryPoints.debugging.transport.respondingTimeouts.idleTimeout=180
Fügen Sie dem traefik-Proxy-Container in der docker-compose.yml Datei den folgenden Port hinzu
- ${DEBUG_CHROME_DEV_TOOLS_EXPOSED_PORT}:${DEBUG_CHROME_DEV_TOOLS_PORT}
Ein vollständiges Beispiel finden Sie hier auf github : Nachdem Sie die Änderungen gespeichert haben, müssen Sie das docker-compose-Setup neu erstellen, um alle Änderungen zu übernehmen.
Öffnen der Debug-Sitzung
Sobald das Feature aktiviert ist, wird im Testmodus eine Schaltfläche Debug Ihrer Funktionen von Server-Side Business Objects angezeigt.
Drücken Sie die Schaltfläche, um die Debug-Sitzung zu starten.
Folgen Sie dem bereitgestellten Link, um Ihre Debug-Sitzung in Chrome DevTools zu öffnen.
Status des Sitzungskontexts
Der aktuelle Status des Debugkontexts wird im Ergebnisfenster angezeigt.
Dies wird zur Visualisierung verwendet. Hinweis: Wenn Sie mehrere Debug-Sitzungen öffnen, wird der Status der zuletzt geöffneten Sitzung angezeigt.
Status | Angezeigter Text | Bemerkungen |
---|---|---|
Initialisierung |
Debuggen der Initialisierung von Sitzungen, |
– |
Offene Sitzung |
Debugsitzung für id: [UUID of session] laufend. |
Es kann nur angezeigt werden, dass die Sitzung geöffnet ist, nicht aber, ob Chrome DevTools eine Verbindung dazu hergestellt hat |
Abschlusssitzung |
Debugsitzung für id: [UUID of session] closing. |
– |
Schließen der Debugsitzung
Sie können die Debug-Sitzung schließen, indem Sie auf die x-Schaltfläche im Infobereich der Debug-Sitzung klicken.
Werden die Chrome Dev Tools nicht innerhalb weniger Minuten über den Link geöffnet, wird der Debug-Kontext automatisch geschlossen.
Hinweise zur Verwendung von Chrome DevTools
Nachdem Sie auf den Link geklickt haben, wird das Chrome DevTool geöffnet, in dem das Debuggen möglich ist.
Die erste Funktion ist eine anonyme Funktion, die übersprungen werden kann, indem der Schritt 4 Mal übersprungen wird (F10).
Dass die anonyme Funktion zuerst aufgerufen wird, liegt an der GraalVM-Implementierung.
Es ist derzeit keine Möglichkeit bekannt, diese Tatsache zu umgehen.
Die eigentliche Funktion wird nun angezeigt und Sie können in Chrome DevTools debuggen.
Nach Abschluss wird die Verbindung zur GraalVM-Instanz getrennt und die Funktion wie gewohnt ausgeführt.