Я использую 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
Но отладчик показывает:
Вид отладчик QList part.subParts_
- мусор. Ссылка ref
на элемент в списке.
Кто-нибудь знает, что здесь происходит?
Точно, где ваша точка останова? На строке комментария? – otisonoza
Точка останова для скриншота была в строке 'return 0;', но она показывает то же самое, если точка останова находится в строке 'for (auto & i: part.subParts_) {' – jcm
Видел? http://stackoverflow.com/questions/16250589/visual-studio-debugger-displays-wrong-values-for-native-types – otisonoza