Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: Denjs от Ноябрь 03, 2010, 01:24



Название: под отладчиком работает, без отладчика - сегфолты....
Отправлено: Denjs от Ноябрь 03, 2010, 01:24
сабж... имею пренеприятнейшую ситуацию, когда под отладчиком программа работает, а будучи запущенной самостоятельно - хвататет сегфолты... причем в разнообразнейших местах, хотя и имеются некоорые типовые последовательности на которые "прогр. выполнила недопустимую операцию" вываливается чаще всего....

что делать?

Причем даже если запускаешь все отдельно - а потом подключаешься к запущенной программе отладчиком - тоже сегфолты "исчезают" (т.е. это не переменные средя или доступность каких-либо библиотек как я понимаю).

что это может вообще быть?!  :( ???

QT 4.7, WinXP SP2,
собрано все в Debug



Название: Re: под отладчиком работает, без отладчика - сегфолты....
Отправлено: b-s-a от Ноябрь 03, 2010, 11:38
да все что угодно. если есть возможность, собери под Linux и запусти под valgrind'ом. Он тебе напишет все, что твоя программа делает не так.


Название: Re: под отладчиком работает, без отладчика - сегфолты....
Отправлено: Denjs от Ноябрь 03, 2010, 11:42
Пока часть сегфолтов исчезла после полной пересборки всех сопутствующих пакетов ... у меня QDroid с плагинами был в отладке в Qt4.6 собран - после того как пересобрал в Qt4.7 - вылет при логоне в начале сеанса работы с программой, который стабильно у меня  "воспроизводится" - исчез вроде... но при чем тут библиотеки QDroid - они никоим образом к куску кода который занимается логином не причастен...

ладно... попробую шаманствовать дальше...


Название: Re: под отладчиком работает, без отладчика - сегфолты....
Отправлено: Sahab от Ноябрь 03, 2010, 13:16
использование неинициализированных переменных


Название: Re: под отладчиком работает, без отладчика - сегфолты....
Отправлено: break от Ноябрь 03, 2010, 21:50
Цитировать
использование неинициализированных переменных
и как следствие затирка памяти

елси бы не было написано что все собрано в debug - можно было бы предположить что в Q_ASSERT() запихнута часть кода которая должна выполняться и в release

Q_ASSERT( init() );