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

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

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Непонятное падение программы  (Прочитано 12248 раз)
opera
Чайник
*
Offline Offline

Сообщений: 93


Просмотр профиля
« Ответ #30 : Январь 29, 2021, 15:24 »

Ну, буст использует куча людей и вряд ли дело в нём. А вот по метатрейдеру я бы напрягся.
Оно ведь кривое, даже без Qt.
да, но это проблема возникает только при закрытии (X) одного из окон приложения и только в режиме debug, во всех остальных случаях, которые я видел и использовал,ничего подобного и критичного нет.Когда приложение создает окно дополнительное и ты его закрываешь, то приложение падает на строке, которую я писал выше. Ни на access violation ни на что-то подобное он не ругается
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #31 : Январь 29, 2021, 16:03 »

тогда, очевидно, надо искать проблему именно в том окне
Записан

Изучением 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
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #32 : Январь 29, 2021, 17:20 »

то приложение падает на строке, которую я писал выше.
Проблема не обязательно именно в этой строке. Но, опять же, без кода это всё - гадание.
Записан

opera
Чайник
*
Offline Offline

Сообщений: 93


Просмотр профиля
« Ответ #33 : Январь 29, 2021, 17:29 »

то приложение падает на строке, которую я писал выше.
Проблема не обязательно именно в этой строке. Но, опять же, без кода это всё - гадание.
я понимаю, но почему отладчик тогда не показывает причину, а ссылается на QtGuid.dll и указывает на общую строку exec?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #34 : Январь 29, 2021, 17:35 »

я понимаю, но почему отладчик тогда не показывает причину, а ссылается на QtGuid.dll и указывает на общую строку exec?
А он (отладчик) в "нутро" заходит? Т.е. если дойти до app.exec() и сделать "step in" (не знаю какая клавиша в Вашем IDE), то Вы "ходите" по коду Qt либы? Если нет, то надо "пересобирать", иначе ловить нечего. И собирать в новые папки/мамки  (а не поверх старых)
Записан
opera
Чайник
*
Offline Offline

Сообщений: 93


Просмотр профиля
« Ответ #35 : Январь 29, 2021, 19:39 »

я понимаю, но почему отладчик тогда не показывает причину, а ссылается на QtGuid.dll и указывает на общую строку exec?
А он (отладчик) в "нутро" заходит? Т.е. если дойти до app.exec() и сделать "step in" (не знаю какая клавиша в Вашем IDE), то Вы "ходите" по коду Qt либы? Если нет, то надо "пересобирать", иначе ловить нечего. И собирать в новые папки/мамки  (а не поверх старых)
Поставил break на строчку app.exec(), естественно приложение там встало, никакие окна не отображаются, нажал Step Into, все заработало, пошел процесс отображения окон и работы самого приложения. По чему конкретно я еще должен ходить?К примеру, по событию закрытия окна closeEvent я хожу
« Последнее редактирование: Январь 29, 2021, 19:42 от opera » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #36 : Январь 29, 2021, 20:11 »

если совсем нет догадок о причинах, берешь то окно и начинаешь отключать куски его кода, пока не локализуешь краш.

еще попробуй через valgrind или подобную утилиту прогнать — высока вероятность, что где-то бьется память, оттого и такой странный стэктрейс.
Записан

Изучением 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
opera
Чайник
*
Offline Offline

Сообщений: 93


Просмотр профиля
« Ответ #37 : Январь 29, 2021, 20:54 »

если совсем нет догадок о причинах, берешь то окно и начинаешь отключать куски его кода, пока не локализуешь краш.

еще попробуй через valgrind или подобную утилиту прогнать — высока вероятность, что где-то бьется память, оттого и такой странный стэктрейс.
еще раз, я прохожу корректно closeEvent и деструктор окна, потом я иду по dll типо Q5Widgets и нажимаю f10,f10 как только я дохожу до Q5Guid он попадает в нее и падает, куски кода комментировать не имеет смысла, я прохожу полность события в отладке close и деструктора, больше кода и нету в принципе,чтобы его проходить и отлаживать,это уже внутренности Qt!
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #38 : Январь 29, 2021, 23:59 »

если бы проблема была во внутренностях Qt, то падало бы при закрытии любого окна. а мое предложение ниже ты, видимо, полностью проигнорировал.

дебаг сборка без подключенного отладчика тоже падает? (например, если просто из файлового менеджера запустить)

можно еще на другой машине и/или в другой ОС потестить.
« Последнее редактирование: Январь 30, 2021, 00:01 от kambala » Записан

Изучением 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
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #39 : Январь 30, 2021, 09:23 »

я понимаю, но почему отладчик тогда не показывает причину, а ссылается на QtGuid.dll и указывает на общую строку exec?
Отладчик - штука не волшебная. Допустим, что исключение вылетело при вызове функции из DLL. Или асинхронно вызвали фукцию из той же DLL, а обработчик уже закрыт на тот момент - "по крестику". Программа упадёт и отладчик, максимум, что сможет показать, что "упала" функция exec. Или покажет окно с ассемблером.
Можно расставить 100500 Q_ASSERT и ловить - вдруг, что попадётся.
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #40 : Январь 30, 2021, 09:32 »

По чему конкретно я еще должен ходить?К примеру, по событию закрытия окна closeEvent я хожу
Так, отладчик работает и стек падения тоже есть - ну так это хорошо. Отладчик должен показывать код/исходники всех вызовов стека, по крайней мере для дебажных Qt либ. Напр по дабл-клику или контекстному меню - ищите. В крайнем случае поставить break в ассемблере перед падением
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


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