Qt: Поиск утечек памяти и ошибок - PullRequest
3 голосов
/ 27 ноября 2010

Я разрабатываю приложение в Qt, и у меня возникают проблемы с отладкой приложения, чтобы найти ошибки, которые приводят к сбою приложения с ошибками во время выполнения. Ошибки, такие как доступ к массиву вне границ или неверный указатель доступа.

QT Creator просто не распознает эту ошибку во время выполнения. Все, что у меня есть, это код завершения, а иногда и сообщение об ошибке подтверждения в выходных данных приложения. Что-то вроде:

ASSERT failure in QList<T>::operator[]: "index out of range", file c:/Qt/2010.05/qt/include/QtCore/../../src/corelib/tools/qlist.h, line 463

Как я могу найти точку, где осуществляется этот доступ? Я попытался запустить gdb на исполняемом файле приложения, но после выхода из приложения с кодом ошибки (03 в этом примере выше) обратной трассировки нет (стек недоступен).

У меня установлена ​​VS, и иногда она просит отладить исключение (не в этом случае: /), но даже в этом случае не распознает символы отладки mingw32 и выдает мне только расформированное представление.

В идеале, я бы хотел иметь стек дампа QT Creator перед такими заявлениями, которые приводили к краху моего приложения. Любые советы?

1 Ответ

2 голосов
/ 02 декабря 2010

Если у вас возникли проблемы с отладкой, попробуйте создать собственную функцию обработки сообщений для сообщений отладки / предупреждения Qt и установить точку останова в этой функции. Тогда ваша программа должна останавливаться всякий раз, когда печатается одно из этих сообщений.

...