Qt Creator中designer使用QWebEngine异常排查

Qt Creator中designer使用QWebEngine异常排查

1、前提背景

最近由于版权的原因,我们采取了自编译的Qt Creator。编译完成之后启动Qt Creator刚开始一切都是很顺利。

但是在Creator中打开designer,使用QWebEngine控件就发生了异常,Qt Creator直接崩溃。

这不,小伙伴弄了一天都没有头绪。我也对这个现象很好奇,决定一探究竟。

2、QWebEngine 在desinger中异常

根据小伙伴的描述,只要使用QWebEngineView控件就会崩溃。我要复现下现场环境。直接做到他的工位上调试。

我说:"你先打开Qt Creator 跑起来。有用调试工具调试?"

小伙伴:"这怎么调试啊。直接崩了。"

我心想:"还是道行不够啊!"

一顿操作后,果然崩了。

小伙伴:"你看,直接崩了!"

准备就关闭异常对话框。

我立马说:"别动,这不是第一现场?对话框都出了"

我说:"点击debug,启动VS 2019调试起来"


我大致推断出,在加载icudtl.dat文件的时候。找不到这个文件。

我说:"先手动复制一个文件放到指定的目录下看看。"但是我还是挺好奇怎么在这个目录加载。

小伙伴:"果然在这个路径下复制个icudtl.dat文件就不崩了。"

但是更诡异的事情来了。

3、频繁的异常奔溃

小伙伴继续测试,就发现一个很奇怪的现象。

光标不断的被抢走,就好像中了病毒一样。

我听了之后:"心里也嘀咕,哦,这么奇怪。"

我说:"打开资源管理器看看,是不是有cpu利用率很高的程序。"

打开观察了几秒钟,就发现一个问题,有一个程序一直不断的奔溃再重启,如此反复。

按理说,这个WER弹框应该是可见的。和第一次奔溃一样。但是怎么一闪即逝。

先上vs2019附加调试看看,但是这个奔溃在vs里面没有捕捉到。这......让我如何是好。

小伙伴用期待的眼神看着我。

我心想:"1、先查日志文件,看看log输出。2、还是直接上Windbg试试。"

我故作镇定的说:"查日志文件,不知道日志文件在哪里。还是上大杀器吧,Windbg请出来。"

在使用windbg时,需要简单配置src目录,pdb目录,还有捕捉c++ 异常。

还有点需要注意,要使用windbg x64版本。我们编译的版本x64架构的。

shell 复制代码
.sympath+ D:\qt_creator\bin # 配置pdb文件目录
.srcpath+ D:\qt_creator #配置Qt Creator 源码目录

在需要配置下,异常捕获,注意只有在调试模式下才能配置此选项:



小伙伴手动复制resource,还有个目录就是translations目录到Qt Creator bin目录下,在启动测试。

嗯,一切正常了。

最后我想起来之前.QtCreator目录还有icudtl.dat文件。既然resource里面存在这个文件,那么这个文件应该没有必要存在。

我让小伙伴删除了,再测试。果然又正常了。

事已至此已经完全解决了。小伙伴投以佩服的眼神。

最后说明下icudtl.dat文件作用:

icudtl.dat 是 Google Chrome 浏览器或 Chromium 浏览器中一个用于国际化的文件,它包含了 International Components for Unicode (ICU) 数据库的内容。ICU 是一个开源的、跨平台的、提供 Unicode 和全球化支持的 C/C++ 软件库,它提供了 Unicode 字符串处理、日期时间、数字格式化、消息本地化、语言环境等功能。在 Chrome 浏览器中,icudtl.dat 主要用于支持浏览器的国际化,包括界面语言、日期时间格式、货币符号等方面。

相关推荐
桥田智能2 天前
桥田智能 QT-650S:面向白车身焊装的 800kg 重载快换解决方案
开发语言·qt·系统架构
森G2 天前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt
森G2 天前
77、线程池原理和实现------服务器源码解析----云视频服务项目
服务器·c++·qt
森G2 天前
71、打包发布---------打包发布
c++·qt
初圣魔门首席弟子2 天前
Node.js 详细介绍(知识库版)
windows·qt·node.js·知识库
C++ 老炮儿的技术栈3 天前
Qt工控实战:自研机器人TCP长连接客户端(粘包处理+心跳保活+自动重连完整源码解析)
qt·tcp/ip·机器人
郝学胜-神的一滴3 天前
CMake 019:程序生成与清理全解析
开发语言·c++·qt·程序人生·软件构建·cmake
森G3 天前
76、仿ASIO实现的Linux c++服务器------服务器源码解析----云视频服务项目
c++·qt
superkcl20223 天前
【QT Thread】
c++·qt
CodeKwang3 天前
Windows 环境 OCCT 8.0 编译构建及与 Qt6 项目集成
windows·qt·opencascade