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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как отловить ошибку которая происходит только при закрытии приложения  (Прочитано 5115 раз)
kvrus
Гость
« : Август 29, 2012, 19:25 »

Дело такое, есть большое приложение с большим количеством классов, запускается и работает нормально нормально, но при закрытии приложения выдает ошибку "завершился с кодом -1073741819". На форумах говорят, что это попытка обратиться к объекту, которого нет (скорее всего по указателю). Так как возникает она только при закрытии приложения, то думается мне что кто то пытается удалить объект, который уже был удален ранее. То есть, надо выставить порядок удаления объектов в деструкторе. Что я собственно и пытался сделать, но без результатов. Никак не могу отловить то что происходит и исходник кинуть не могу, так как он большой и я не знаю где именно ошибка. Как вообще отлавливают такие ошибки?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Август 29, 2012, 19:29 »

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

Изучением 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
andrew.k
Гость
« Ответ #2 : Август 29, 2012, 19:29 »

под отладчиком то пробовал запускать?
Записан
kvrus
Гость
« Ответ #3 : Август 29, 2012, 19:31 »

А что происходит когда помещаю виджет в стек? Стек будет пытаться его удалить?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Август 29, 2012, 19:37 »

объект автоматически уничтожится по выходе из области видимости
Записан

Изучением 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
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Август 29, 2012, 19:45 »

Смотри в PurifyPlus, для него есть пробная версия, она не показывает строку где происходит ошибка, но показывает саму ошибку, что натолкнёт на мысли.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Август 29, 2012, 19:55 »

Как вообще отлавливают такие ошибки?
Отладчиком и др инструментами, менять что-то вслепую можно долго но безуспешно. В консоль смотреть не помешает. Часто помогает symbolic breakpoint.
Записан
andrew.k
Гость
« Ответ #7 : Август 29, 2012, 19:55 »

Смотри в PurifyPlus, для него есть пробная версия, она не показывает строку где происходит ошибка, но показывает саму ошибку, что натолкнёт на мысли.
да скорее всего там все просто. и камбола прав с вероятностью в 79%.
думаю main.cpp будет достаточно для отлова ошибки)
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #8 : Сентябрь 09, 2012, 17:26 »

Как вообще отлавливают такие ошибки?
Вырубают участок за участком и смотрят, где ошибка.
ПС. Лучше тестировать классы раздельно и хранить сторию версий в том-же свн-е.
Сравниваешь изменения от близких версии где такого бага нет и где есть и медитируешь над каждым изменением.
Где-то так.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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