Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: RedApe от Март 24, 2011, 20:10



Название: QTCreator + gdb, реакция на assert
Отправлено: RedApe от Март 24, 2011, 20:10
Запускаю свою программу в Debug режиме. Вылетает сообщение

Код:
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

И в консоли приложения:
Код:
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
Это что? Такая и должна быть реакция в QtCreator на срабатывание ассерта?

PS:
Windows,
QT Creator 2.0.1, скачен с сайта,
программа компилируется gcc,


Название: Re: QTCreator + gdb, реакция на assert
Отправлено: Пантер от Март 24, 2011, 21:43
Где-то выходишь за границы списка.


Название: Re: QTCreator + gdb, реакция на assert
Отправлено: RedApe от Март 24, 2011, 21:52
Где-то выходишь за границы списка.

Это понятно.

Но при отладке в Visual Studio, если срабатывает ассерт, отладка останавливается. Можно просматривать стек, переменные, продолжить исполнение и т.п.

Здесь не так?


Название: Re: QTCreator + gdb, реакция на assert
Отправлено: Авварон от Март 25, 2011, 02:17
хреново вы запускаете в дебаге значит:) дебаггер не зацепился


Название: Re: QTCreator + gdb, реакция на assert
Отправлено: b-s-a от Март 25, 2011, 11:33
нужно запускать отладочную сборку


Название: Re: QTCreator + gdb, реакция на assert
Отправлено: RedApe от Март 25, 2011, 15:41
нужно запускать отладочную сборку

Запускаю отладочную, gdb виден в процессах. Код можно выполнять пошагово, но при исполнении ничего не меняется, все равно вываливается тоже самое сообщение :(


Название: Re: QTCreator + gdb, реакция на assert
Отправлено: Пантер от Март 25, 2011, 15:51
Такого рода ошибки (мо/ну)жно руками искать, а не в дебагере. ;)


Название: Re: QTCreator + gdb, реакция на assert
Отправлено: Авварон от Март 25, 2011, 16:51
Ну соообщение в любом случае пишется. Сначаоа печатается мессадж, потом искусственный краш и только после этого дебагер останавливается


Название: Re: QTCreator + gdb, реакция на assert
Отправлено: RedApe от Март 25, 2011, 19:47
Такого рода ошибки (мо/ну)жно руками искать, а не в дебагере. ;)

Это философия. Ассерты тогда вообще не нужны получаются.

Ну соообщение в любом случае пишется. Сначаоа печатается мессадж, потом искусственный краш и только после этого дебагер останавливается

Нет, не так. Вот картинку прикладываю.
Следующим шагом (F11 или F5) приложение будет остановлено "Приложение завершилось с кодом exit-code="03".


Название: Re: QTCreator + gdb, реакция на assert
Отправлено: JamS007 от Март 25, 2011, 21:55
Не знаю как у вас, а у меня в таких случаях дебаггер ведет себя так:

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

Дебаггер будет закрыт только после того как нажать "стоп" или  еще раз "старт".


Название: Re: QTCreator + gdb, реакция на assert
Отправлено: RedApe от Март 25, 2011, 23:12
Увы, только кнопка Ок :(


Название: Re: QTCreator + gdb, реакция на assert
Отправлено: serg_hd от Март 28, 2011, 19:54
кстати ужасно раздражает, что этот асерт
Код:
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
указывает на номер строки класса списка, а не номер строки, где выходишь за пределы объекта списка, т.е. твой код.