Qt WebEngine のデバッグとプロファイリング

コンソールログ

Qt WebEngine 内で実行される JavaScript は、Chrome のコンソール API を使用してコンソールに情報を記録できます。ロギングメッセージはjs logging category 内の Qt のロギング機能に転送されます。ただし、デフォルトでは警告と致命的なメッセージのみが出力されます。これを変更するには、js カテゴリにカスタムルールを設定するか、QWebEnginePage::javaScriptConsoleMessage() を再実装するか、WebEngineView::javaScriptConsoleMessage() に接続することでカスタムメッセージハンドラを提供する必要があります。

すべてのメッセージは Qt WebEngine 開発者ツールからもアクセスできます。

Qt WebEngine 開発者ツール

Qt WebEngine モジュールでは、Web コンテンツのレイアウトやパフォーマンスの問題を簡単に検査したりデバッグしたりできる Web 開発者ツールを提供しています。

開発者ツールは、Chrome ブラウザなどの Chromium または Qt WebEngine ベースのブラウザを使用して、ローカルの Web ページとしてアクセスします。

開発者ツールを有効にするには、Qt WebEngine を使用するアプリケーションをコマンドライン引数--remote-debugging-port=<portnumber> で起動します。

注: WebEngine コマンドラインオプションは、--webEngineArgs オプションの後に指定する必要があります。このオプションは、ユーザーのアプリケーション固有のオプションと、WebEngine のオプションを分離するために使用されます。

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

<port_number> はローカル・ネットワーク・ポートを指します。ウェブ開発者ツールは、http://localhost:<port_number> のアドレスでブラウザを起動することでアクセスできます。

あるいは、環境変数 QTWEBENGINE_REMOTE_DEBUGGING を設定することもできます。これは、--remote-debugging-port と同様に動作するポートだけを設定することも、ホスト・アドレスとポートの両方を設定することもできます。後者を使用すると、インターフェースをエクスポートするネットワークインターフェースを制御できるため、リモートデバイスから開発者ツールにアクセスできます。

<origin> リモート・デバッグ中の WebSocket エラーを回避するには、追加のコマンドライン引数--remote-allow-origins=<origin>[,<origin>, ...] を追加します。すべてのオリジンからの接続を許可するには--remote-allow-origins=* を使用します。何も指定しない場合、Qt WebEngine はリモートデバッグが有効なときにコマンドライン引数に--remote-allow-origins=* を追加し、すべてのオリジンからのリクエストを許可します。

開発者ツールの機能の詳細については、Chrome DevTools のページを参照してください。

コマンドライン引数の使用

デバッグ中に以下のコマンドライン引数を使用すると、バグレポートに入力できます:

  • --disable-gpu GPU ハードウェア アクセラレーションを無効にします。これは OpenGL の問題を診断するときに便利です。
  • --disable-logging コンソールロギングを無効にします。これはデバッグビルドに便利です。
  • --enable-logging --log-level=0 コンソールロギングを有効にし、ロギングレベルを 0 に設定します。これは、 以上の重大度のメッセージがログに記録されることを意味します。これはデバッグビルドのデフォルトである。その他の可能なログレベルは、警告の場合は 、エラーの場合は 、致命的なエラーの場合は である。info 1 2 3
  • --v=1 ロギング・レベルを で可能なレベル以上に上げ、冗長性レベル までのデバッグ・メッセージのロギングを可能にする。これより高い数値は、さらに冗長性を高めますが、ログに記録されるメッセージの数が多くなる可能性があります。デフォルトは (デバッグ・メッセージなし)です。--log-level 1 0
  • --no-sandbox レンダラとプラグインプロセスのサンドボックスを無効にします。サンドボックスを無効にすると、セキュリティ リスクがあることに注意してください。
  • --single-process ブラウザと同じプロセスでレンダラーとプラグインを実行します。これは、レンダラーがクラッシュしたときのスタックトレースを取得するのに便利です。
  • --enable-features=NetworkServiceInProcess メインプロセスでネットワーキングを実行する。QtWebEngineProcess ではなく、アプリケーションの実行ファイルのみをホワイトリストに登録する必要があるため、ファイアウォールの管理に役立ちます。しかし、これはネットワークサービスのサンドボックスのセキュリティを失うことを意味します。

WebEngine コマンドラインオプションは、--webEngineArgs オプションの後に指定する必要があります。 オプションは、ユーザーのアプリケーション固有のオプションと、WebEngine オプションを分離するために使用されます。

--webEngineArgs [WebEngine specific options]

また、環境変数QTWEBENGINE_CHROMIUM_FLAGSを設定することもできます。例えば、mybrowserというアプリケーションのデバッグ中にロギングを無効にするには、次の値を設定します:

QTWEBENGINE_CHROMIUM_FLAGS="--disable-logging" mybrowser

QTWEBENGINE_CHROMIUM_FLAGSは、QtWebEngineQuick::initialize()の前に呼び出すと、アプリケーション内からqputenv

WebEngineContext 情報のダンプ

WebEngineContext 情報をダンプするには、環境変数QT_LOGGING_RULES"qt.webenginecontext.debug=true" に設定します。

出力される情報には、グラフィカルバックエンドに関する情報と、Qt WebEngine がアプリケーション用に初期化される方法が含まれます。これは特に問題の再現に役立ちます。

本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。