关于在VS+QtTools环境下使用QList<自定义类型>调试存在乱码问题的研究【记录】

前言

这个问题是在同事在从数据库读取数据时才发现的。工作使用的环境是VS2015+QtTools+DM8。这里我先把乱码图片粘贴下面。

下面贴出了结构体和测试的源代码以及调试出现的乱码 。 测试环境是 VS2022+QtTools (我在VS2015、VS2019、VS2022均已测试)。
调试时数据在QList中出现的乱码

同事的解决方案

他从网上查找好像有类似的问题,别人给出的解决方案是在这个结构体后面加一个非基本类型成员再放入QList数据就正常了。 下面展示我实际测试。
在这里插入图片描述
虽然说把结构体修改完后存放到QList中数据就正常了。但是我还是不理解这是为什么。为什么只需要在结构体增加一个非基本类型变量就会影响到QList里面的数据。

当结构体作用域改变时

当天我晚上回来就拿我自己电脑测试。但是我测试时是把这个结构体放到了函数体内。如下图调试结果就发生了改变。在QList里面的数据也正常了。
在这里插入图片描述

这时我更加迷惑了但是我发现一个新的点

下面是结构体在函数体外和函数体内调试时的区别。但是我不懂为什么结构体放在函数体内,却不显示list[0]。有大佬懂的可以评论区讲解下。
在这里插入图片描述

总结目前发现的俩种解决方案

  1. 在结构体里底部增加一个非基本类型变量
  2. 将结构体移到函数内部

当我不调试执行运行它它它它有又变了

前面的所有测试均在调试监视测试的数据。 下面展示结构体分别在函数体内和体外的打印测试结果
在这里插入图片描述
在这里插入图片描述

初步个人结论

结果意想不到,前面测试结构体在函数体外时在Qlist里面的数据不应该是乱码吗?为什么又正常了?
这时我怀疑可能是Tools的问题。所以直接换环境 拿Qt Ceator4.11.0 测试

Qt测试结果

下面是调试跟踪图。发现数据正常
在这里插入图片描述

下面是打印输出结果图 。 数据正常
在这里插入图片描述

总结

这个调试存在乱码应该就是QtTools的问题。但是不影响实际的结果内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林夕07

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值