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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Как узнать почему программа падает на return a.exec(); ?  (Прочитано 5697 раз)
Hrundel
Гость
« : Апрель 03, 2014, 13:31 »

Всем привет,

программа проходит удачно через все функции и когда заканчивает обход - падает в main на return a.exec();

Код
C++ (Qt)
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   MainWindow w;
   //w.showFullScreen();
   w.show();
 
   return a.exec();
}

Как можно определить источник ошибки?

Понятно, что источник ошибки сидит перед компьютером, но все же хочется найти объективную причину Улыбающийся Как это сделать?
« Последнее редактирование: Апрель 03, 2014, 17:39 от Hrundel » Записан
Bepec
Гость
« Ответ #1 : Апрель 03, 2014, 14:18 »

Если она падает на return'е, значит роняет приложение какой то вызов слота. Соответственно берём и ставим на все функции main брякпоинты и смотрим по шажку куда что убегает Улыбающийся
Записан
Hrundel
Гость
« Ответ #2 : Апрель 03, 2014, 14:22 »

Дык, делал. Ничего вроде, как не убегает.
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #3 : Апрель 03, 2014, 14:25 »

ну для начала

Код:
return a.exec();

заменить на

Код:
int r = a.exec();
printf("exit code %i\n", r); // это больше для того, чтобы не заооптимизировало
return r;

и смотреть где упадет...

а вообще, скорее всего, где-то есть лишний delete
Записан

2^7-1 == 127, задумайтесь...
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Апрель 03, 2014, 14:26 »

может в каком-то деструкторе, который вызывается только при завершении программы, второй раз удаляется указатель
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Swa
Самовар
**
Offline Offline

Сообщений: 170


Просмотр профиля
« Ответ #5 : Апрель 03, 2014, 14:31 »

Запускаете программу в отладчике и в момент "падения" можно будет по стектрейсу посмотреть, где ошибочный код
Записан
Hrundel
Гость
« Ответ #6 : Апрель 03, 2014, 17:39 »

... а вообще, скорее всего, где-то есть лишний delete
... второй раз удаляется указатель

Гурман, kambala, спасибо.
Нашелся лишний delete;

Всем спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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