Qt Creator中designer使用QWebEngine异常排查

Qt Creator中designer使用QWebEngine异常排查

1、前提背景

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

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

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

2、QWebEngine 在desinger中异常

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

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

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

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

一顿操作后,果然崩了。

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

准备就关闭异常对话框。

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

Qt Creator中designer使用QWebEngine异常排查_第1张图片

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

Qt Creator中designer使用QWebEngine异常排查_第2张图片
Qt Creator中designer使用QWebEngine异常排查_第3张图片

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

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

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

但是更诡异的事情来了。

3、频繁的异常奔溃

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

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

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

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

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

Qt Creator中designer使用QWebEngine异常排查_第4张图片

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

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

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

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

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

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

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

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

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

Qt Creator中designer使用QWebEngine异常排查_第5张图片
Qt Creator中designer使用QWebEngine异常排查_第6张图片
Qt Creator中designer使用QWebEngine异常排查_第7张图片

小伙伴手动复制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 主要用于支持浏览器的国际化,包括界面语言、日期时间格式、货币符号等方面。

你可能感兴趣的:(Qt实战记录,qt,Qt,Creator,designer,QWebEngine)