LINUX.ORG.RU

Debugging with QtCreator: содержимое this недоступно

 , ,


0

2

Привет, эксперты. Столкнулся с такой проблемой. Есть класс, одним из его полей является структура. У структуры есть методы, которые в ходе работы программы вызываются.

При отладке, если поставить брейкпоинт внутри метода структуры, при остановке программы в этом месте, в отладочной сводке (в правой части IDE) можно посмотреть только значения локальных переменных текущего метода. Содержимое указателя this (т.е. указателя на упомянутый класс) помечено как not accessible.

Улетел за полстраны, захватив с собой кое-какой код, который хотел поковырять, водрузил фреймворк и IDE на доступный комп, а тут такая засада с отладкой. На рабочем компе отладчик всё прекрасно показывал, такой фигни вообще никогда не возникало.

Как бы это дело починить?

QtCreator 4.9.2, Qt 5.12.2, g++ 8.3.0, gdb 8.2.91


Ответ на: комментарий от pon4ik

Вся программа представляет собой один-единственный виджет (дефолтный Qt-шный шаблон проекта). Метод структуры, которая является полем класса этого виджета, вызывается в момент нажатия на кнопку на виджете.

Затрудняюсь понять, какая из этих сущностей в этот момент может быть освобождена или не выделена.

s3rjke ()

Может быть метод заинлайнился? Попробуй внутри метода сохранить указатель на this. qDebug, чтобы компилятор не выкинул неиспользуемую переменную.

auto tmp = this;
qDebug() << tmp;

ox55ff ★★★★★ ()
Ответ на: комментарий от s3rjke

Что-то странное. У тебя в режиме отладки внизу есть стектрейс. Пошарься по нему. Список локальных переменных будет соответствующим образом меняться. А так я хз. Такое у себя не припомню, хотя каждый день работаю с отладчиком в QtCreator.

ox55ff ★★★★★ ()
Ответ на: комментарий от ox55ff

Починилося! Пока гуглил эту тему в каких-то ссылках упоминались статические переменные, типа с ними какие-то проблемы. Оказалось, у меня в структуру затесалась парочка таких, которые так и не пригодились.

Убрал их и всё стало норм. Эх, щас бы пытаться пользоваться головой после ночного перелёта...

s3rjke ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.