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