我使用QtCreator 3和Qt 5.2以及VS2012编译器,来自Windows调试工具的CDB调试器。 在调试程序(调试版本)时,我注意到调试器中显示的值有时是错误的。我可以通过以下最小例子重现问题:
#include <QList>
#include <QDebug>
struct SubPart
{
unsigned short v1, v2, v3;
};
struct Part
{
void appendSubPart(unsigned short v1, unsigned short v2, unsigned short v3)
{
SubPart newSubPart;
newSubPart.v1 = v1;
newSubPart.v2 = v2;
newSubPart.v3 = v3;
subParts_ << newSubPart;
}
QList<SubPart> subParts_;
};
int main(int argc, char *argv[])
{
Part part;
part.appendSubPart(1, 2, 3);
part.appendSubPart(3, 4, 5);
SubPart &ref(part.subParts_[0]);
// Debug print the content of part.subParts_
for ( auto &i : part.subParts_ ) {
qDebug() << i.v1 << i.v2 << i.v3;
}
return 0;
}
程序输出(如预期的那样):
1 2 3
3 4 5
但调试器显示:
QList part.subParts_
的调试器视图是垃圾。对列表中元素的引用ref
。
任何人都知道这里发生了什么?
答案 0 :(得分:0)
将Qt Creator更新到版本3.0.1并将Qt更新到版本5.2.1解决了这个问题。 QList的调试视图显示正确的值。