| 
			| 
					
						| 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 » |  | 
 
 Это приложение и является тестовым. Запросы я делал для проверки работоспособности драйвера БД. Когда убедился в работоспособности - я все лишнее убрал. Сейчас приложение содержит только коннект к базе данных. Дисконнект я так же убрал (предварительно проверив) Когда пытаешься сделать дисконнект - происходит такая же ошибка.
 Код в студию! |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |