Qt WebEngine 调试和性能分析

控制台日志

Qt WebEngine 内部执行的 JavaScript 可以使用 Chrome 控制台 API 将信息记录到控制台。日志消息将被转发到 Qt 的 js 日志分类。然而,默认情况下只打印警告和致命消息。要更改此设置,您必须为 js 分类设置自定义规则,或者通过重新实现 QWebEnginePage::javaScriptConsoleMessage() 或连接到 WebEngineView::javaScriptConsoleMessage 提供自定义消息处理器。

所有消息也可以通过 Qt WebEngine 开发者工具访问。

Qt WebEngine 开发者工具

Qt WebEngine 模块提供供网页开发者使用的工具,这些工具可以轻松检查和调试任何网页内容的布局和性能问题。

开发者工具是通过使用基于 Chromium 或 Qt WebEngine 的浏览器(如 Chrome 浏览器)访问的本地网页。

要激活开发者工具,请使用命令行参数 --remote-debugging-port=<端口号> 启动使用 Qt WebEngine 的应用程序。

注意:任何 WebEngine 命令行选项应在 --webEngineArgs 选项之后指定,该选项用于将用户的特定应用程序选项与 WebEngine 的选项分开。

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

<端口号> 指的是本地网络端口。然后可以通过在地址 http://localhost:<端口号> 启动浏览器来访问网页开发者工具。

或者,可以设置环境变量 QTWEBENGINE_REMOTE_DEBUGGING。它可以设置为与 --remote-debugging-port 相似的工作方式的端口号或同时提供主机地址和端口号。后者可以用来控制要导出接口的网络接口,因此您可以从远程设备访问开发者工具。

为了防止远程调试期间的 WebSocket 错误,请添加额外的命令行参数 --remote-allow-origins=<源>[,<源>, ...],其中 <源> 表示请求源。使用 --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。但这意味着会失去网络服务的沙盒安全。

或设置环境变量QTWEBENGINE_CHROMIUM_FLAGS。例如,以下值可以设置为在调试名为mybrowser的应用程序时禁用日志记录。

QTWEBENGINE_CHROMIUM_FLAGS="--disable-logging" mybrowser

QTWEBENGINE_CHROMIUM_FLAGS还可以在应用程序中使用qputenv设置,前提是在QtWebEngineQuick::initialize()之前调用。

转储WebEngineContext信息

为了转储WebEngineContext信息,可以将环境变量QT_LOGGING_RULES设置为"qt.webenginecontext.debug=true"

输出包含有关图形后端以及Qt WebEngine为应用初始化的方式的信息。这对于重现问题尤其有用。

© 2024Qt公司有限公司。本文件包含的文档贡献是各自所有者的版权。本文件提供的文档受自由软件基金会公布的GNU自由文档许可协议版本1.3条款许可。Qt及其相关标志是芬兰和/或其他国家Qt公司的商标。所有其他商标均为各自所有者的财产。