0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 96
1

Debug и release

30.05.2018, 08:18. Показов 5635. Ответов 17
Метки нет (Все метки)

Добрый день. проблема в следующем - в режиме Debug программа работает адекватно, в программе есть обращения к sqlite, все записывается и считывается. Есть диалоговое окно. Зупускается по кнопке, всё работает. Как только переходишь в режим выпуска, exe крашится:
C++ (Qt)
1
2
3
The program has unexpectedly finished.
The process was ended forcefully.
D:/build-example-Desktop_Qt_5_10_0_MinGW_32bit-Release/release/example.exe crashed.
Притом, если запустит этот экзешник, то он работает, но как только нажимаешь кнопку вызова диалогового окна - программа вылетает. в чем может быть причина? почему в отладке работает, но при выпуске возникает такая проблема?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2018, 08:18
Ответы с готовыми решениями:

Debug работает, Release валится
написал программку - RSS-фильтр поскольку изначально была задумка получения информации о выходе...

Разница release & debug
В чём собствено разница в версии релиза и дебага? Как бы теорию то знаю, но вот не понимаю чем в...

Создание проекта в QT Creator: Debug и Release
Кто знает, для чего в QTCreator при создании проекта возможность создать Debug и Release. Т.е. чем...

Разница в выводе графики между release и debug
Добрый день. Пример из книги М. Шлее. Qt версия 5.7. У всех так, или только у меня картинки разные...

17
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
30.05.2018, 09:13 2
Самое тупое - не инициализированные данные.
0
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 96
30.05.2018, 12:03  [ТС] 3
Цитата Сообщение от icpu Посмотреть сообщение
Самое тупое - не инициализированные данные.
нет, все данные инициализированы, из того, что он выдает, только вот:

C++ (Qt)
1
2
3
4
5
6
7
8
9
Starting D:\Tipikina\build-example-Desktop_Qt_5_10_0_MinGW_32bit-Release\release\example.exe...
QMetaObject::connectSlotsByName: Connecting slot on_comboBox_protocol_activated() with the first of the following compatible signals: ("activated(int)", "activated(QString)")
QMetaObject::connectSlotsByName: Connecting slot on_comboBox_date_activated() with the first of the following compatible signals: ("activated(int)", "activated(QString)")
QMetaObject::connectSlotsByName: Connecting slot on_comboBox_date_activated() with the first of the following compatible signals: ("activated(int)", "activated(QString)")
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
The program has unexpectedly finished.
The process was ended forcefully.
D:/Tipikina/build-example-Desktop_Qt_5_10_0_MinGW_32bit-Release/release/example.exe crashed.
по поводу комбобоксов - раньше с этими предупреждениями всё собиралось нормально, а по поводу БД - везде пишут что не обязательно ее закрывать, поскольку у меня БД открываются разные и в разных формах программы
0
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
30.05.2018, 12:20 4
Базы данных, конечно, не обязательно закрывать, но вот следить, чтобы QSqlQuery не пережил свою базу тогда придётся самостоятельно. В целом, из имеющихся данных, у вас программа написана с ошибкой. Да.
0
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 96
30.05.2018, 12:24  [ТС] 5
Цитата Сообщение от icpu Посмотреть сообщение
чтобы QSqlQuery не пережил свою базу
Что это значит? и как этого избежать? Подскажите, пожалуйста, с базами только недавно начала работать. уже есть релиз и с базами, и с комбобоксами, поэтому сложно отследить, из-за чего конкретно экзешник крашится. При запуске все работает до момента, пока не нажмешь на кнопку запуска диалога.. но в режиме отладки все запускается и работает без проблем
0
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
30.05.2018, 12:26 6
Самое тупое: давай имена базам данных. addDatabase имеет второй параметр - имя подключение, а QSqlQuery в конструкторе принимает базу данных, с которой нужно работать
0
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 96
30.05.2018, 12:28  [ТС] 7
в issues никаких ошибок не вываливается

Добавлено через 2 минуты
Цитата Сообщение от icpu Посмотреть сообщение
Самое тупое: давай имена базам данных. addDatabase имеет второй параметр - имя подключение, а QSqlQuery в конструкторе принимает базу данных, с которой нужно работать
мои запросы имеют следующий вид:
C++ (Qt)
1
2
QSqlQuery query;
query.exec("SELECT propertyNumber FROM monitoring WHERE deviceId = '"+QString::number(a.id) +"'");
Вы имеете ввиду, что нужно делать так:
C++ (Qt)
1
2
3
QSqlQuery query;
query.exec(db_monitoring);
query.exec("SELECT propertyNumber FROM monitoring WHERE deviceId = '"+QString::number(a.id) +"'");
0
2287 / 786 / 299
Регистрация: 10.02.2018
Сообщений: 1,839
30.05.2018, 12:29 8
А под отладчиком запустить release сборку что-то не позволяет?
Если развалилось, значит первым делом нужно посмотреть где именно развалилось, на каком коде.
0
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
30.05.2018, 12:52 9
Мде
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
QSqlDatabase::addDatabase("QSQLITE", "скулите");
QSqlDatabase::addDatabase("QPSQL", "поскули");
QSqlDatabase::addDatabase("QMYSQL", "маскали");
 
/* ... */
 
QSqlQuery query(QSqlDatabase::database("маскали"));
query.prepare("SELECT propertyNumber FROM monitoring WHERE deviceId = :deviceId");
query.bindValue(":", a.id);
query.exec();
0
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 96
30.05.2018, 13:03  [ТС] 10
Цитата Сообщение от Ygg Посмотреть сообщение
А под отладчиком запустить release сборку что-то не позволяет?
Вот... ничего не ясно
Миниатюры
Debug и release  
0
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 96
30.05.2018, 13:06  [ТС] 11
Цитата Сообщение от icpu Посмотреть сообщение
QSqlDatabase::addDatabase("QSQLITE", "скулите");
он не выпадает при отладке в релизе на БД, он выподает хрен пойми где (фото выше)
0
2287 / 786 / 299
Регистрация: 10.02.2018
Сообщений: 1,839
30.05.2018, 13:12 12
Цитата Сообщение от Mtip Посмотреть сообщение
Вот... ничего не ясно
Посмотрите стек вызовов (call stack). Ассемблера, конечно, недостаточно.
0
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 96
30.05.2018, 13:21  [ТС] 13
Цитата Сообщение от Ygg Посмотреть сообщение
Посмотрите стек вызовов (call stack). Ассемблера, конечно, недостаточно.
Это всё что он выдает....
Миниатюры
Debug и release  
0
Заблокирован
30.05.2018, 13:48 14
ну ты не видишь, у тебя сегментейшен фол вылетает, значит ты где-то к обращаешься к не инициализированным данным..
Так, между прочим, ты где-то QVariant используешь?

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от icpu Посмотреть сообщение
"маскали"
lol, какол детектид )))))

0
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 96
30.05.2018, 13:50  [ТС] 15
Цитата Сообщение от UAIS Посмотреть сообщение
ну ты не видишь, у тебя сегментейшен фол вылетает, значит ты где-то к обращаешься к не инициализированным данным..
Так, между прочим, ты где-то QVariant используешь?
Честно пролистала все файлы через find, нигде не использую QVariant. А если есть не инициализированные переменные, они всегда вываливаются в issues, у меня была парочка, я их инициализировала. Больше никаких issues нет вообще
0
Заблокирован
30.05.2018, 14:17 16
Mtip, используешь minGW небойсь? Забудь про этот шлак, используй под винду MSVS
Хочешь сказать, что когда ты в режиме отладки запускаешь через "треугольничек с жучком" у тебя не вылезает ошибка, она появляется только в релизе? Даже если у тебя горит "отладка" в QtCreator, отлаживать нужно через отладчик, то есть запускать через треугольник с жуком
0
2287 / 786 / 299
Регистрация: 10.02.2018
Сообщений: 1,839
30.05.2018, 16:01 17
Mtip
В левой части экрана creatora есть закладки/кнопки инструментов. Выберите закладку "проекты". Для выпуска в "этапе сборки" поставьте галочку на "отделять отладочную информацию". Пересоберите проект и попробуйте ещё раз запустить отладку для release.
0
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 96
31.05.2018, 07:48  [ТС] 18
проблема решена, может кому-то будет полезно. В одном из конструкторов, вместо
C++ (Qt)
1
2
3
4
5
6
7
8
    if(D.size()){
        ui->comboBox_date->addItem(D[0]);
 
        for (int i = 1; i < D.size(); i++) {
            if (D[i] != D[i - 1])
                ui->comboBox_date->addItem(D[i]);
        }
    }
было

C++ (Qt)
1
2
3
4
5
6
        ui->comboBox_date->addItem(D[0]);
 
        for (int i = 1; i < D.size(); i++) {
            if (D[i] != D[i - 1])
                ui->comboBox_date->addItem(D[i]);
        }
Как итог - пустой лист.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2018, 07:48
Помогаю со студенческими работами здесь

Внешний вид программы в Debug и Release версиях
Не могу понять, почему, когда запускаю свою программу в режиме Release, то все её внешние элементы...

Разное поведение при debug и release сборке
Здравствуйте! Писал клиент для сервера и вот с чем столкнулся: с слоте чтения данных пришедших с...

Статическая сборка Qt / Расположение папки с Debug/Release файлом ПО
Только пришел в Qt. Создал в Qt Creator проект типа Qt Quick Controls 2 Application. Пустое окно с...

Не запускается release
Проблема в следующем: собрал проект под Windows, добавил все необходимые библиотеки, но, когда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru