Qt WebEngine Fehlersuche und Profiling

Konsolenprotokollierung

JavaScript, das innerhalb von Qt WebEngine ausgeführt wird, kann die Chrome-Konsolen-API verwenden, um Informationen auf einer Konsole zu protokollieren. Die Logging-Meldungen werden an die Qt-Logging-Funktionen innerhalb von js logging category weitergeleitet. Allerdings werden standardmäßig nur Warn- und Fehlermeldungen ausgegeben. Um dies zu ändern, müssen Sie entweder benutzerdefinierte Regeln für die Kategorie js festlegen oder benutzerdefinierte Nachrichten-Handler bereitstellen, indem Sie QWebEnginePage::javaScriptConsoleMessage() neu implementieren oder eine Verbindung zu WebEngineView::javaScriptConsoleMessage() herstellen.

Auf alle Meldungen kann auch über die Qt WebEngine Entwicklerwerkzeuge zugegriffen werden.

Qt WebEngine Entwickler-Tools

Das Modul Qt WebEngine stellt Webentwickler-Tools zur Verfügung, mit denen sich Layout- und Performance-Probleme beliebiger Webinhalte leicht überprüfen und beheben lassen.

Der Zugriff auf die Entwickler-Tools erfolgt als lokale Webseite mit einem Chromium- oder Qt WebEngine -basierten Browser, wie z. B. dem Chrome-Browser.

Um die Entwicklertools zu aktivieren, starten Sie eine Anwendung, die Qt WebEngine verwendet, mit dem Befehlszeilenargument --remote-debugging-port=<portnumber>.

Hinweis: Alle WebEngine Befehlszeilenoptionen sollten nach der Option --webEngineArgs angegeben werden, die verwendet wird, um die anwendungsspezifischen Optionen des Benutzers von den Optionen von WebEngine zu trennen.

--webEngineArgs --remote-debugging-port=<portnumber>

Dabei bezieht sich <port_number> auf einen lokalen Netzwerkanschluss. Der Zugriff auf die Webentwickler-Tools erfolgt dann durch den Start eines Browsers unter der Adresse http://localhost:<port_number>.

Alternativ kann auch die Umgebungsvariable QTWEBENGINE_REMOTE_DEBUGGING gesetzt werden. Es kann entweder nur ein Port angegeben werden, der ähnlich wie --remote-debugging-port funktioniert, oder es kann sowohl eine Host-Adresse als auch ein Port angegeben werden. Letzteres kann verwendet werden, um zu steuern, über welche Netzwerkschnittstelle die Schnittstelle exportiert werden soll, so dass Sie von einem entfernten Gerät aus auf die Entwicklerwerkzeuge zugreifen können.

Um WebSocket-Fehler beim Remote-Debugging zu vermeiden, fügen Sie ein zusätzliches Befehlszeilenargument --remote-allow-origins=<origin>[,<origin>, ...] hinzu, wobei <origin> auf den Ursprung der Anfrage verweist. Verwenden Sie --remote-allow-origins=*, um Verbindungen aus allen Herkunftsländern zuzulassen. Wenn nichts angegeben wird, fügt Qt WebEngine --remote-allow-origins=* zu den Befehlszeilenargumenten hinzu, wenn das Remote-Debugging aktiviert ist, und lässt somit Anfragen von allen Herkünften zu.

Eine ausführliche Erläuterung der Funktionen von Entwickler-Tools finden Sie auf der Seite Chrome DevTools.

Verwenden von Befehlszeilenargumenten

Sie können die folgenden Befehlszeilenargumente beim Debuggen verwenden, um Eingaben für Fehlerberichte bereitzustellen:

  • --disable-gpu Deaktiviert die GPU-Hardwarebeschleunigung. Dies ist bei der Diagnose von OpenGL-Problemen nützlich.
  • --disable-logging deaktiviert die Konsolenprotokollierung, was für Debug-Builds nützlich sein kann.
  • --enable-logging --log-level=0 aktiviert die Konsolenprotokollierung und setzt die Protokollierungsebene auf 0, was bedeutet, dass Meldungen mit dem Schweregrad info und höher im Protokoll aufgezeichnet werden. Dies ist der Standard für Debug-Builds. Andere mögliche Protokollierungsstufen sind 1 für Warnungen, 2 für Fehler und 3 für schwerwiegende Fehler.
  • --v=1 Erhöht die Protokollierungsstufe über das hinaus, was --log-level kann, und ermöglicht die Protokollierung von Debug-Meldungen bis zur Ausführlichkeitsstufe 1. Eine höhere Zahl erhöht die Ausführlichkeit weiter, kann aber zu einer großen Anzahl von protokollierten Meldungen führen. Die Voreinstellung ist 0 (keine Debug-Meldungen).
  • --no-sandbox deaktiviert die Sandbox für die Renderer- und Plugin-Prozesse. Denken Sie daran, dass die Deaktivierung der Sandbox ein Sicherheitsrisiko darstellen kann.
  • --single-process lässt den Renderer und die Plugins im selben Prozess wie den Browser laufen. Dies ist nützlich, um Stack Traces für Renderer-Abstürze zu erhalten.
  • --enable-features=NetworkServiceInProcess führt das Netzwerk im Hauptprozess aus. Dies kann die Firewall-Verwaltung erleichtern, da nur die ausführbare Anwendung auf die Whitelist gesetzt werden muss und nicht QtWebEngineProcess. Es bedeutet jedoch, dass die Sicherheit des Sandboxing des Netzwerkdienstes verloren geht.

Alle WebEngine Kommandozeilenoptionen sollten nach der Option --webEngineArgs angegeben werden, die verwendet wird, um die anwendungsspezifischen Optionen des Benutzers von den Optionen von WebEngine zu trennen.

--webEngineArgs [WebEngine specific options]

Alternativ kann auch die Umgebungsvariable QTWEBENGINE_CHROMIUM_FLAGS gesetzt werden. Zum Beispiel könnte der folgende Wert gesetzt werden, um das Logging während des Debuggens einer Anwendung namens mybrowser zu deaktivieren:

QTWEBENGINE_CHROMIUM_FLAGS="--disable-logging" mybrowser

QTWEBENGINE_CHROMIUM_FLAGS kann auch mit qputenv innerhalb der Anwendung gesetzt werden, wenn es vor QtWebEngineQuick::initialize() aufgerufen wird.

Dump WebEngineContext Informationen

Um die WebEngineContext Informationen auszugeben, können Sie die Umgebungsvariable QT_LOGGING_RULES auf "qt.webenginecontext.debug=true" setzen.

Die Ausgabe enthält Informationen über das grafische Backend und die Art und Weise, wie Qt WebEngine für die Anwendung initialisiert wird. Dies ist besonders nützlich, um Probleme zu reproduzieren.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.