Aleksey_Zh
Гость
|
|
« : Ноябрь 23, 2009, 16:30 » |
|
Имеется относительно работоспособное приложение, единственным недостатком которого является то, что при выходе из него возникает ошибка тянущая за собой предложение отправить отчет в мелкософт. Как можно избавиться от последнего? (Раньше писал на делфи, там была такая функция - SetErrorMode)
|
|
|
Записан
|
|
|
|
kuzulis
|
|
« Ответ #1 : Ноябрь 23, 2009, 16:42 » |
|
Это сегфаулт где-то Ищите в коде. Возникает к примеру - если что-то удаляете уже удаленное/несуществующее или еще что-нибудь. Или что-то не удаляется при завершении приложения.. Обычно с потоками такое бывает и т.п.
|
|
« Последнее редактирование: Ноябрь 23, 2009, 16:45 от kuzulis »
|
Записан
|
ArchLinux x86_64 / Win10 64 bit
|
|
|
spectre71
Гость
|
|
« Ответ #2 : Ноябрь 23, 2009, 16:46 » |
|
Имеется относительно работоспособное приложение, единственным недостатком которого является то, что при выходе из него возникает ошибка тянущая за собой предложение отправить отчет в мелкософт. Как можно избавиться от последнего? (Раньше писал на делфи, там была такая функция - SetErrorMode)
1) Если это твоя прога - то надо правиь ошибку! 2) SetErrorMode - не дельфийская, а виндовая! MSDN: UINT SetErrorMode( UINT uMode ); Example: #include <Windows.h> SetErrorMode(SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
|
|
|
Записан
|
|
|
|
Aleksey_Zh
Гость
|
|
« Ответ #3 : Ноябрь 24, 2009, 09:48 » |
|
Спасибо за ответы. Прога моя, но где глюк искать - не знаю. Имеется объект типа QSqlDataBase. Подключение производится нормально, запросы выполняются. Но после выхода из проги - краш. Комментирую работу с базой - краш пропадает.
|
|
|
Записан
|
|
|
|
Prm
Гость
|
|
« Ответ #4 : Ноябрь 24, 2009, 11:51 » |
|
А перед завершением программы соединение с базой закрываете?
|
|
|
Записан
|
|
|
|
Aleksey_Zh
Гость
|
|
« Ответ #5 : Ноябрь 24, 2009, 11:58 » |
|
Проьовал по-разному. Выносил закрытие базы в отдельный пункт меню - вылетало на нем. Если не делал закрытие - ошибка появлялась на выходе из программы. Когда убирал работу с базой - ошибка не возникала вовсе.
|
|
|
Записан
|
|
|
|
DmP
Гость
|
|
« Ответ #6 : Ноябрь 24, 2009, 12:48 » |
|
Проьовал по-разному. Выносил закрытие базы в отдельный пункт меню - вылетало на нем. Если не делал закрытие - ошибка появлялась на выходе из программы. Когда убирал работу с базой - ошибка не возникала вовсе.
Если валится при закрытии БД, то не обязательно ошибка в этом месте, возможно что ранее удалили что то лишний раз, или где то вылезли за пределы массива.
|
|
|
Записан
|
|
|
|
ax
Чайник
Offline
Сообщений: 60
|
|
« Ответ #7 : Ноябрь 24, 2009, 13:03 » |
|
перед зарытием сделай всем активным QSqlQuery clear()
|
|
|
Записан
|
|
|
|
Igors
|
|
« Ответ #8 : Ноябрь 24, 2009, 13:24 » |
|
Проьовал по-разному. Выносил закрытие базы в отдельный пункт меню - вылетало на нем. Если не делал закрытие - ошибка появлялась на выходе из программы. Когда убирал работу с базой - ошибка не возникала вовсе.
Тогда и "закатчить" к месту bool closeError = false; try { // закрываем базу ... } catch (...) { closeError = true; }
Это не значит что можно не исправлять
|
|
|
Записан
|
|
|
|
spectre71
Гость
|
|
« Ответ #9 : Ноябрь 24, 2009, 13:54 » |
|
Проьовал по-разному. Выносил закрытие базы в отдельный пункт меню - вылетало на нем. Если не делал закрытие - ошибка появлялась на выходе из программы. Когда убирал работу с базой - ошибка не возникала вовсе.
Тогда и "закатчить" к месту bool closeError = false; try { // закрываем базу ... } catch (...) { closeError = true; }
Это не значит что можно не исправлять сегфаулт - так не поймать!
|
|
|
Записан
|
|
|
|
Aleksey_Zh
Гость
|
|
« Ответ #10 : Ноябрь 24, 2009, 14:07 » |
|
Для проверки оставлял только коннект к базе. Все запросы отключены. Голый коннект. Исправлять больше нечего . Коннект есть - есть ошибка. Коннекта нет - все в норме.
|
|
|
Записан
|
|
|
|
spectre71
Гость
|
|
« Ответ #11 : Ноябрь 24, 2009, 14:21 » |
|
Для проверки оставлял только коннект к базе. Все запросы отключены. Голый коннект. Исправлять больше нечего . Коннект есть - есть ошибка. Коннекта нет - все в норме. Сделай тестовое приложение только с твоим соединением и расссоединением с базой, больше ничего, никаких левых обработок. И проверь есть ли ошибка.
|
|
|
Записан
|
|
|
|
lit-uriy
|
|
« Ответ #12 : Ноябрь 24, 2009, 14:46 » |
|
Aleksey_Zh, у тебя приложение случаем не консольное?
|
|
|
Записан
|
Юра.
|
|
|
Aleksey_Zh
Гость
|
|
« Ответ #13 : Ноябрь 24, 2009, 14:51 » |
|
Это приложение и является тестовым. Запросы я делал для проверки работоспособности драйвера БД. Когда убедился в работоспособности - я все лишнее убрал. Сейчас приложение содержит только коннект к базе данных. Дисконнект я так же убрал (предварительно проверив) Когда пытаешься сделать дисконнект - происходит такая же ошибка.
|
|
|
Записан
|
|
|
|
spectre71
Гость
|
|
« Ответ #14 : Ноябрь 24, 2009, 14:54 » |
|
Это приложение и является тестовым. Запросы я делал для проверки работоспособности драйвера БД. Когда убедился в работоспособности - я все лишнее убрал. Сейчас приложение содержит только коннект к базе данных. Дисконнект я так же убрал (предварительно проверив) Когда пытаешься сделать дисконнект - происходит такая же ошибка.
Код в студию!
|
|
|
Записан
|
|
|
|
|