Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > В дебаге работает, в релизе прблема


Автор: nvrrus 27.2.2012, 15:50
Здравствуйте, уважаемые форумчане! Подскажите, пожалуйста, может кто сталкивался с такой проблемой.

Есть двухпоточная программа в qt.
В одном из потоков идет выгрузка данных из БД.
В дебажной сборке вообще никаких вопросов. Все работает отлично.

В релизе обнаружилась проблема. В визуалке не отображаются те же данные, что в дебажной версии в тех же условиях.

Начал копать, обнаружился такой момент:

Код

//выполнение запроса к БД
res = Doc->GetFromDataSource((void*)m_pstk, Q, (void*)m_IniData.LogServerAddr.c_str(), m_IniData.LogServerAddr.size());
showWarning("после выполнения запроса"); //если эта строчка есть, все работает нормально, если ее нет, данные не отображаются в визуалке


Подскажите, пожалуйста, в чем может быть проблема?

Автор: borisbn 27.2.2012, 17:42
nvrrus, ситуация может быть любая, но есть подозрение, что ты обращаешься к визуальным компонентам из дополнительного (не ГУЙ-ного) потока. Этого делать нельзя. 

Автор: nvrrus 28.2.2012, 13:43
borisbn, к визуальным компонентам во втором потоке не обращаюсь никак.

Автор: math64 28.2.2012, 13:54
Если работаешь в потоке с QSqlTableModel - всё нормально.
Но подсоединить эту таблицу напрямую к QTableView - нельзя.
Цитата(nvrrus @  27.2.2012,  15:50 Найти цитируемый пост)
(void*)m_IniData.LogServerAddr.c_str()

Не может быть ошибка здесь? Часто результат c_str() нужно сразу копировать, потом он может указывать на удалённые данные.

Автор: Sahab 29.2.2012, 02:08
Цитата(nvrrus @  27.2.2012,  15:50 Найти цитируемый пост)
В дебажной сборке вообще никаких вопросов. Все работает отлично.

В релизе обнаружилась проблема. 

Чаще всего эта проблема из-за неинициализированных данных.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)