Название: Программа валится, если не прицепить отладчик Отправлено: __Heaven__ от Март 31, 2015, 19:40 Привет друзья!
Использую win 8 x64, Qt 5.4.1 mingw x64 Сборку произвожу с конфигурацией debug. При сборке по ctrl+r (без отладчика) у меня происходит запуск и сразу же вылет - стандартный диалог винды "Прекращена работа программы...." Цитировать Сигнатура проблемы: Запускаясь по F5 (с отладчиком) - всё ок.Имя события проблемы: APPCRASH Имя приложения: Master.exe Версия приложения: 0.0.0.0 Отметка времени приложения: 00000000 Имя модуля с ошибкой: nvoglv32.DLL Версия модуля с ошибкой: 9.18.13.4752 Отметка времени модуля с ошибкой: 54d3aed2 Код исключения: c0000005 Смещение исключения: 00922a70 Версия ОС: 6.3.9600.2.0.0.256.48 Код языка: 1049 Дополнительные сведения 1: 5861 Дополнительные сведения 2: 5861822e1919d7c014bbb064c64908b2 Дополнительные сведения 3: a10f Дополнительные сведения 4: a10ff7d2bb2516fdc753f9c34fc3b069 Ознакомьтесь с заявлением о конфиденциальности в Интернете: http://go.microsoft.com/fwlink/?linkid=280262 Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом: C:\Windows\system32\ru-RU\erofflps.txt Мне бы понять, где я в коде накосячил... Пока что, глядя на nvoglv32.DLL, понимаю, что где-то в части OpenGL Название: Re: Программа валится, если не прицепить отладчик Отправлено: Old от Март 31, 2015, 19:47 Где то не инициализировали переменные - указатели.
Название: Re: Программа валится, если не прицепить отладчик Отправлено: Igors от Март 31, 2015, 19:56 Можно попробовать скомпилить с отладчиком и с оптимизацией (напр в MSVC такая возможность есть). Иначе или лог или совать в код прямой вызов debug. И то и другое не сладко и не быстро. Лучше всего применить тул (только что отписался в др теме) - но его "надо изыскивать"
Название: Re: Программа валится, если не прицепить отладчик Отправлено: __Heaven__ от Март 31, 2015, 20:02 Да что-то проблема с этим msvc. Наверное, потому что я решил пытаться работать в community версии. Потом вернусь к нему.
Проблему решил. Для этого пришлось покататься по коммитам, а потом комментируя блоки кода установил, что проблема была в Код Я ей передавал указатель на массив данных в памяти и их количество. Количество превышало фактическое. Не понимаю, почему мне valgrind не ругнулся, да и почему валится... Ну, брал бы себе совершенно левые значения, да и отрисовывал бы (как он это делает с прикреплённым отладчиком) Название: Re: Программа валится, если не прицепить отладчик Отправлено: Bepec от Март 31, 2015, 20:19 Видимо брал одновременно с тем, чьи данные там лежали. Вот и конфликт интересов :D
Название: Re: Программа валится, если не прицепить отладчик Отправлено: __Heaven__ от Март 31, 2015, 20:21 Видимо брал одновременно с тем, чьи данные там лежали. Вот и конфликт интересов :D Не понимаю. Смотреть запрещено каким-то образом?Название: Re: Программа валится, если не прицепить отладчик Отправлено: Igors от Апрель 01, 2015, 08:18 ..., да и почему валится... Ну, брал бы себе совершенно левые значения, да и отрисовывал бы (как он это делает с прикреплённым отладчиком) Они могут оказаться за пределами распределенной приложением памятиНазвание: Re: Программа валится, если не прицепить отладчик Отправлено: __Heaven__ от Апрель 01, 2015, 09:33 А как же обнуление при переполнении? Растолкуйте, пожалуйста.
Название: Re: Программа валится, если не прицепить отладчик Отправлено: Bepec от Апрель 01, 2015, 09:57 Если честно в этой области теория у меня хромает на все три ноги, но поправьте меня если я не прав. (заодно подкачаю)
читать одновременно одну и ту же область памяти из разных потоков нельзя? Почему так решил - печальный опыт работы с потоками - чтение одной переменной двумя разными потоками вызывает неадекватное поведение. PS а где можно почитать об этом, желательно на русском. Название: Re: Программа валится, если не прицепить отладчик Отправлено: Old от Апрель 01, 2015, 10:01 Можно. Даже писать можно, но результат будет зависит от умений программиста. :)
Название: Re: Программа валится, если не прицепить отладчик Отправлено: Igors от Апрель 01, 2015, 10:42 А как же обнуление при переполнении? Растолкуйте, пожалуйста. Какое обнуление/переполнение? ПримерКод Это может сразу вылететь, но может и нет. Напр str оказалось в начале страницы выделенной приложению - все норм (тихо гадим). читать одновременно одну и ту же область памяти из разных потоков нельзя? Можно, и shared память тоже. Название: Re: Программа валится, если не прицепить отладчик Отправлено: __Heaven__ от Апрель 01, 2015, 14:48 Нет. Игорь, вы дали пример на запись. Моя же функция принимает const char*
Название: Re: Программа валится, если не прицепить отладчик Отправлено: Igors от Апрель 01, 2015, 15:02 Нет. Игорь, вы дали пример на запись. Моя же функция принимает const char* В данном случае разницы никакой - при попытке читать адрес не отмапленный в адресное пр-во процесса ОС немедленно выдаст исключение "общая защита"Название: Re: Программа валится, если не прицепить отладчик Отправлено: __Heaven__ от Апрель 10, 2015, 09:22 Да, действительно, вы правы.
Я до конца не знал природу сигнала SIGSEGV. Интересно, что без отладчика и на другом пк на линуксе всё работало. Видимо, повезло. Спасибо. |