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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Избавляемся от ошибок  (Прочитано 17372 раз)
Aleksey_Zh
Гость
« : Ноябрь 23, 2009, 16:30 »

Имеется относительно работоспособное приложение, единственным недостатком которого является то, что при выходе из него возникает ошибка тянущая за собой предложение отправить отчет в мелкософт. Как можно избавиться от последнего? (Раньше писал на делфи, там была такая функция - SetErrorMode)
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #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 Offline

Сообщений: 60


Просмотр профиля
« Ответ #7 : Ноябрь 24, 2009, 13:03 »

перед зарытием сделай всем активным QSqlQuery clear()
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #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
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #12 : Ноябрь 24, 2009, 14:46 »

Aleksey_Zh, у тебя приложение случаем не консольное?
Записан

Юра.
Aleksey_Zh
Гость
« Ответ #13 : Ноябрь 24, 2009, 14:51 »

Это приложение и является тестовым. Запросы я делал для проверки работоспособности драйвера БД. Когда убедился в работоспособности - я все лишнее убрал. Сейчас приложение содержит только коннект к базе данных. Дисконнект я так же убрал (предварительно проверив) Когда пытаешься сделать дисконнект - происходит такая же ошибка.
Записан
spectre71
Гость
« Ответ #14 : Ноябрь 24, 2009, 14:54 »

Это приложение и является тестовым. Запросы я делал для проверки работоспособности драйвера БД. Когда убедился в работоспособности - я все лишнее убрал. Сейчас приложение содержит только коннект к базе данных. Дисконнект я так же убрал (предварительно проверив) Когда пытаешься сделать дисконнект - происходит такая же ошибка.

Код в студию!
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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