news 2026/6/10 17:14:41

Qt5 QWebEngine 调试最佳实践指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt5 QWebEngine 调试最佳实践指南

公众号:cpp手艺人

Qt5 QWebEngine 调试最佳实践指南

最近在项目中遇到很多关于QWebEngine的疑难杂症,越发的发现调试手段的重要性。所以我这里做了一次总结。

总结来说三种:日志输出信息和自带的dev tools,以及远程调试。

1、开启日志调试:

1、Chromium 日志可以帮助排查:

  • GPU崩溃
  • 渲染进程异常退出
  • JS 引擎 V8 崩溃
  • 网络加载失败
  • 资源加载路径错误
  • 渲染降级(从 GPU → 软件渲染)

2、操作方法

1、代码配置

#include <QApplication> #include <QWebEngineView> int main(int argc, char *argv[]) { // 输出日志到 stderr 和 文件 qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--enable-logging=stderr --v=2 --vmodule=gpu*=2,renderer*=2,v8*=2"); QApplication app(argc, argv); QWebEngineView view; view.resize(1200, 800); view.load(QUrl("https://www.example.com")); view.show(); return app.exec(); }

2. 参数说明

参数作用
--enable-logging=stderr输出到控制台
--v=2推荐的详细日志等级
--vmodule=gpu*=2打印 GPU 子系统日志(排查 WebGL、黑屏最关键)
renderer*=2打印渲染进程日志
v8*=2打印 JS 引擎日志

3、问题

但是这个方案有个问题就是:日志是在控制台看的不能保存文件中。

执行下面的命令就可以将日志重定向到文件中。可以将命令写到bat文件中即可。

my_qwebengine_app.exe > D:\logs\qweb_log.txt 2>&1

2、开启DevTools调试:

1、DevTools 功能

DevTools = Chrome 的 F12 面板可以用来调试:

  • JS 错误
  • DOM 结构
  • 网络请求(Network)
  • 页面性能(Performance)
  • 内存泄漏(Memory)
  • GPU 渲染监控(Rendering)

2、代码配置

重写keypressEvent函数即可,在里面监听F12消息,

voidMainWindow::keyPressEvent(QKeyEvent*event){// 检测是否按下F12键if(event->key()==Qt::Key_F12){qDebug()<<"Key_F12";QWebEngineView*devToolsView01=newQWebEngineView();m_devToolDlg=QPointer<QWidget>(newQWidget);m_devToolDlg->setWindowFlags(Qt::Tool|Qt::X11BypassWindowManagerHint);autolayout=newQHBoxLayout;layout->setContentsMargins(0,0,0,0);m_devToolDlg->setLayout(layout);m_devToolDlg->setWindowFlag(Qt::WindowMinMaxButtonsHint);m_devToolDlg->setWindowFlag(Qt::WindowStaysOnTopHint);autopt=mapToGlobal(pos());m_devToolDlg->setGeometry(pt.x(),pt.y(),width(),height());m_devToolDlg->setAttribute(Qt::WA_DeleteOnClose);devToolsView01=newQWebEngineView(m_devToolDlg);layout->addWidget(devToolsView01);autosource=devToolsView01->page();webView->page()->setDevToolsPage(source);webView->page()->triggerAction(QWebEnginePage::InspectElement);m_devToolDlg->show();}// 传递其他按键事件给父类处理QMainWindow::keyPressEvent(event);}

3、开启远程调试(最简单的方案)

在你的main函数代码中最开始加入一行代码即可,这是最简单的方案调试。

此时使用浏览器访问端口即可:http://127.0.0.1:9222

4、使用release版调试:

在调试过程我们发现Debug的调试速度非常的慢,所以我们切换到release版调试,速度就会非常的快。

但是没有在编译的时候,还是需要生成pdb文件。否则很多东西被优化看不到值。

的调试速度非常的慢,所以我们切换到release版调试,速度就会非常的快。

但是没有在编译的时候,还是需要生成pdb文件。否则很多东西被优化看不到值。

[外链图片转存中…(img-Kx1764Ma-1765794589616)]

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:37:53

【开题答辩全过程】以 高校排课系统的优化设计与实现为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…

作者头像 李华
网站建设 2026/6/9 21:31:21

【Linux网络编程】TCP Socket

前言&#xff1a; 继上一篇完成了 UDP 协议的复习后&#xff0c;最近梳理了 TCP 协议的底层实现。与 UDP “即发即忘”的特性不同&#xff0c;TCP 作为一种面向连接、可靠的字节流协议&#xff0c;虽然握手和挥手的过程增加了复杂性&#xff0c;但它是构建稳定网络服务&#xf…

作者头像 李华
网站建设 2026/6/10 14:30:58

谷歌翻译在 Gemini 获得了重大升级,APP 翻译更实时

谷歌正在为其 Gemini 音频模型推出一次重大更新&#xff0c;为谷歌翻译&#xff08;Google Translate&#xff09;应用带来强大的实时语音到语音翻译功能。此次升级采用了改进后的 Gemini 2.5 Flash Native Audio 模型&#xff0c;专为处理复杂的语音交互而设计。这项全新的实时…

作者头像 李华
网站建设 2026/6/9 22:26:10

如何利用智能客服大脑提升服务效率?

在当今服务行业中&#xff0c;智能客服大脑正在成为提升服务效率的核心工具。它不仅支持企业实现24小时自动化服务&#xff0c;还能够灵活应对客户的多样化需求。通过整合大数据与自然语言处理技术&#xff0c;企业可以提供高质量的客户互动&#xff0c;减少人工成本&#xff0…

作者头像 李华
网站建设 2026/6/9 19:35:53

Word生成PPT好不好用?2025年自动转换工具真实体验评测

年终岁末&#xff0c;职场人士都在为年终总结忙碌不已。不少人花费大量时间将Word文档内容手动整理成PPT&#xff0c;加班熬夜成了常态。其实&#xff0c;借助AI生成PPT工具&#xff0c;能让年终总结的制作变得轻松高效。那么&#xff0c;在众多工具中&#xff0c;哪些能实现Wo…

作者头像 李华
网站建设 2026/6/9 23:46:08

一手实测豆包手机助手,这就是当今手机Agent的天花板。

在智能手机不断进化的今天&#xff0c;AI助手作为提升用户体验的重要功能&#xff0c;已经成为了手机厂商竞争的一个重要领域。2025年12月&#xff0c;豆包手机的发布给这一领域带来了巨大的震动。特别是豆包手机的AI助手&#xff0c;它不仅仅是一个简单的语音助手&#xff0c;…

作者头像 李华