Russian Qt Forum
Ноябрь 23, 2024, 04:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTCreator + gdb, реакция на assert  (Прочитано 8375 раз)
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,
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Март 24, 2011, 21:43 »

Где-то выходишь за границы списка.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
RedApe
Гость
« Ответ #2 : Март 24, 2011, 21:52 »

Где-то выходишь за границы списка.

Это понятно.

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

Здесь не так?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Март 25, 2011, 02:17 »

хреново вы запускаете в дебаге значит:) дебаггер не зацепился
Записан
b-s-a
Гость
« Ответ #4 : Март 25, 2011, 11:33 »

нужно запускать отладочную сборку
Записан
RedApe
Гость
« Ответ #5 : Март 25, 2011, 15:41 »

нужно запускать отладочную сборку

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

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Март 25, 2011, 15:51 »

Такого рода ошибки (мо/ну)жно руками искать, а не в дебагере. Подмигивающий
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #7 : Март 25, 2011, 16:51 »

Ну соообщение в любом случае пишется. Сначаоа печатается мессадж, потом искусственный краш и только после этого дебагер останавливается
Записан
RedApe
Гость
« Ответ #8 : Март 25, 2011, 19:47 »

Такого рода ошибки (мо/ну)жно руками искать, а не в дебагере. Подмигивающий

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

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

Нет, не так. Вот картинку прикладываю.
Следующим шагом (F11 или F5) приложение будет остановлено "Приложение завершилось с кодом exit-code="03".
Записан
JamS007
Гость
« Ответ #9 : Март 25, 2011, 21:55 »

Не знаю как у вас, а у меня в таких случаях дебаггер ведет себя так:

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

Дебаггер будет закрыт только после того как нажать "стоп" или  еще раз "старт".
Записан
RedApe
Гость
« Ответ #10 : Март 25, 2011, 23:12 »

Увы, только кнопка Ок Грустный
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #11 : Март 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
указывает на номер строки класса списка, а не номер строки, где выходишь за пределы объекта списка, т.е. твой код.
« Последнее редактирование: Март 28, 2011, 20:10 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 22.