带有CDB的QtCreator 3在调试器中显示错误的值

时间:2014-02-04 19:41:32

标签: c++ qt qt-creator

我使用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

但调试器显示:

Debugger screenshot

QList part.subParts_的调试器视图是垃圾。对列表中元素的引用ref

任何人都知道这里发生了什么?

1 个答案:

答案 0 :(得分:0)

将Qt Creator更新到版本3.0.1并将Qt更新到版本5.2.1解决了这个问题。 QList的调试视图显示正确的值。