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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Падает программа. Как понять где ошибка?  (Прочитано 12663 раз)
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« : Август 26, 2015, 09:23 »

Падает программа при совершении некоторых действий, как нажатие на некоторые кнопки или удаление строки из таблицы. Причём раньше когда стоял только Qt 4.4.3 не падала, похоже что стала падать после установки Qt 4.8.5.
Отладчик открывает free.c, падение происходит при выходе из функции моей программы (на закрывающей скобочке).
Обычно если пишешь за пределы массива программа там же и падает, а здесь отладчик не даёт никакой информации.
Как найти ошибку?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #1 : Август 26, 2015, 09:25 »

Дебажить, увеличить логгирование, использовать valgrind.
Записан

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

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Август 26, 2015, 09:26 »

Обычно если пишешь за пределы массива программа там же и падает
Не всегда. Иногда просто идё порча соседних данных.
Самый быстрый способ - через valgrind.
Записан
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« Ответ #3 : Август 26, 2015, 09:39 »

Самый быстрый способ - через valgrind.

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

Сообщений: 2130



Просмотр профиля
« Ответ #4 : Август 26, 2015, 09:39 »

Да
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #5 : Август 26, 2015, 09:40 »

Самый быстрый способ - через valgrind.

это самый долгий )
столько мусору выдаст от самой qt - не найти свой баг
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #6 : Август 26, 2015, 09:40 »

Но valgrind только под Linux.
Записан

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

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #7 : Август 26, 2015, 09:41 »

Самый быстрый способ - через valgrind.

это самый долгий )
столько мусору выдаст от самой qt - не найти свой баг

Если запускать из-под Креатора, Кьютового мусора будет мало, там фильтруется.
Записан

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

Сообщений: 245


Просмотр профиля
« Ответ #8 : Август 26, 2015, 09:42 »

это самый долгий )
столько мусору выдаст от самой qt - не найти свой баг

А как тогда искать? Проект довольно большой, переписывать с нуля?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #9 : Август 26, 2015, 09:51 »

это самый долгий )
столько мусору выдаст от самой qt - не найти свой баг

А как тогда искать? Проект довольно большой, переписывать с нуля?

Логируйте или запускайте под отладчиком
Записан

qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #10 : Август 26, 2015, 09:54 »

Если запускать из-под Креатора, Кьютового мусора будет мало, там фильтруется.

да, так меньше
Записан
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« Ответ #11 : Август 26, 2015, 09:55 »

Логируйте или запускайте под отладчиком

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

Сообщений: 2130



Просмотр профиля
« Ответ #12 : Август 26, 2015, 09:59 »

Под отладкой можно день - бесконечность просидеть. Быстрее поставить valgrind и прогнать в нём проект.
Даже если используется винда, поставить себе virtual box с линуксом на борту (например lubuntu) и накатить qtcreator с valgrind. Ещё ни раз пригодится.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #13 : Август 26, 2015, 10:00 »

Отладчик не помогает.

если падает стабильно - считай что повезло, ищется элементарно - прям сам qtcreator и напишет где упал
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #14 : Август 26, 2015, 10:01 »

А что логировать то? Отладчик не помогает.
Вы далеко не в худшем положении из возможных, знаете место вылета и действия что к нему приводят. Всего этого могло и не быть - вот тогда нужно начинать длинную песню с логами.

Отладчик открывает free.c, падение происходит при выходе из функции моей программы (на закрывающей скобочке).
В первую очередь зайдите в эту скобочку - там обычно вызов деструкторов

если падает стабильно - считай что повезло,
То да
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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