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

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

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

Сообщений: 245


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

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

Сообщений: 5877


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


Просмотр профиля 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

Сообщений: 5877


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


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

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

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

Сообщений: 5877


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


Просмотр профиля 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.025 секунд. Запросов: 19.