2014-02-04 2 views
2

Я использую QtCreator 3 с Qt 5.2 и компилятором VS2012, отладчиком CDB от инструментов отладки Windows. При отладке программы (сборка отладки) я заметил, что значения, показанные в отладчике, иногда ошибочны. Я могу воспроизвести проблему на следующий минимальный пример:QtCreator 3 с 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 на элемент в списке.

Кто-нибудь знает, что здесь происходит?

+0

Точно, где ваша точка останова? На строке комментария? – otisonoza

+0

Точка останова для скриншота была в строке 'return 0;', но она показывает то же самое, если точка останова находится в строке 'for (auto & i: part.subParts_) {' – jcm

+0

Видел? http://stackoverflow.com/questions/16250589/visual-studio-debugger-displays-wrong-values-for-native-types – otisonoza

ответ

0

Обновление Qt Creator до версии 3.0.1 и Qt до версии 5.2.1 решило проблему. Отладочное представление QList показывает правильные значения.

Смежные вопросы