Qt Creator中designer使用QWebEngine异常排查

news/2024/11/14 13:19:45/

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架构的。

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


http://www.ppmy.cn/news/1004443.html

相关文章

8.4一日总结

1.远程仓库的提交方式(免密提交) a.ssh:隧道加密传输协议,一般用来登录远程服务器 b.使用 git clone 仓库名 配置(生成公私钥对) ssh-Keygen [-t rsa -C 邮箱地址] 通过执行上述命令,全程回车,就会在~/.ssh/id_rsa(私钥)和id_rsa.pub(公钥),私钥是必须要保存好的,并不能…

PostgreSQL查询索引及字段详情(终极版)

PostgreSQL查询索引及字段详情(终极版) PostgreSQL查询索引及字段详情(终极版) PostgreSQL查询索引及字段详情(终极版) -- PostgreSQL查询索引及字段详情(终极版) with idx as ( se…

freeswitch的mod_xml_curl模块动态获取dialplan

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 mod_xml_curl模块支持从web服务获取xml配置,本文介绍如何动态获取dialplan配置。 环境 centos:CentOS release 7.0 (Final)或以上版本 freeswitch:v1.6.20 GCC:4.8.5…

2023-08-04 LeetCode每日一题(不同路径 III)

2023-08-04每日一题 一、题目编号 980. 不同路径 III二、题目链接 点击跳转到题目位置 三、题目描述 在二维网格 grid 上,有 4 种类型的方格: 1 表示起始方格。且只有一个起始方格。2 表示结束方格,且只有一个结束方格。0 表示我们可以…

案例|会展大数据服务系统 智能服务体系建设实践

根据相关的市场调查发现在国内进行的2000多个会展项目中,仅有15%的项目能够提供相关主题网站基本业务和服务,且提供的服务并不能够满足会展各方的应用,剩余的大部门会展项目信息系统构建的不够完善、技术性差、应用复杂等,甚至提供…

正则表达式学习记录(Python)

正则表达式学习记录(Python) 一、特殊符号和字符 多个正则表达式匹配 ( | ) 用来分隔不同的匹配模式,相当于逻辑或,可以符合其中任何一个正则表达式 at | home # 表示匹配at或者home bat | bet | bit # 表示匹配bat或…

6.如何用CSV文件生成异构图数据集

我们将使用GroupLens研究小组收集的MovieLens数据集。 这个数据集描述了MovieLens的五星评级和标记活动。该数据集包含来自600多名用户的9000多部电影的约10万个评分。我们将使用该数据集生成两种节点类型,分别保存电影和用户的数据,以及一种连接…

Shell脚本学习-Shell脚本框架

我们能写出.sh文件的脚本。已经觉得很好了。但是我们还需要进一步学习脚本框架的概念。 1、Shell脚本(模块)高级命名规则: 1)常规Shell脚本:chang.sh、test.sh等 2)模块的启动和停止统一命名为&#xff1…