Russian Qt Forum
Ноябрь 26, 2024, 16:32
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Избавляемся от ошибок
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Избавляемся от ошибок (Прочитано 17359 раз)
Aleksey_Zh
Гость
Re: Избавляемся от ошибок
«
Ответ #15 :
Ноябрь 24, 2009, 15:13 »
ui->setupUi(this);
this->setWindowFlags(Qt::WindowStaysOnTopHint);
QSqlDatabase TMB;
TMB = QSqlDatabase::addDatabase("QMYSQL");
TMB.setDatabaseName("tmse");
if (!TMB.open()) {
QMessageBox::critical(0, "RealtorPlus", qApp->tr("Cannot open database.\n"
"Unable to establish a database connection.\n"
"Perhaps Qt was built without database support.\n\n"
"Click Cancel to exit."), QMessageBox::Cancel);
} else {
QMessageBox::information(0,"","подключился");
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Избавляемся от ошибок
«
Ответ #16 :
Ноябрь 24, 2009, 15:17 »
Цитата: Spectre от Ноябрь 24, 2009, 13:54
сегфаулт - так не поймать!
Никто не говорил что это сегфаулт, может кто-то испустил throw. А если и сегфаулт - то только лучше - он обычно хорошо виден в отладчике. Вообще, Алексей, что пишет консоль, что показывает отладчик? Без этого гадать можно очень долго.
Записан
Aleksey_Zh
Гость
Re: Избавляемся от ошибок
«
Ответ #17 :
Ноябрь 24, 2009, 15:24 »
AppName: testmysqlembedded.exe AppVer: 0.0.0.0 ModName: libmysqld.dll
ModVer: 0.0.0.0 Offset: 00051f79
Это выдает винда.
D:\QTProjects\TestMySqlEmbedded\release\TestMySqlEmbedded.exe exited with code -1073741819
это выдается в консоли
Записан
Aleksey_Zh
Гость
Re: Избавляемся от ошибок
«
Ответ #18 :
Ноябрь 24, 2009, 15:48 »
Прошу прощения, не заметил сообщение от lit-uriy.
Нет, приложение не консольное. Обычное Qt4 Gui Application
Записан
spectre71
Гость
Re: Избавляемся от ошибок
«
Ответ #19 :
Ноябрь 24, 2009, 16:04 »
Цитата: Igors от Ноябрь 24, 2009, 15:17
Цитата: Spectre от Ноябрь 24, 2009, 13:54
сегфаулт - так не поймать!
Никто не говорил что это сегфаулт, может кто-то испустил throw. А если и сегфаулт - то только лучше - он обычно хорошо виден в отладчике. Вообще, Алексей, что пишет консоль, что показывает отладчик? Без этого гадать можно очень долго.
Qt классы не испускают throw, так что не поможет.
Записан
SimpleSunny
Гость
Re: Избавляемся от ошибок
«
Ответ #20 :
Ноябрь 24, 2009, 16:11 »
Возможно проблема в том, что объект QSqlDatabase TMB; создается в конструкторе формы, и после выхода из него (конструктора) будет уничтожен, попробуй вынести объявление в *.h файл.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Избавляемся от ошибок
«
Ответ #21 :
Ноябрь 24, 2009, 16:13 »
>>объект QSqlDatabase TMB ... будет уничтожен
а он потом и не нужен, соединение с БД (QSqlDatabase) устроено как "именованный одиночка" т.е. информация хранится в статических членах этого класса.
Записан
Юра.
uriel
Гость
Re: Избавляемся от ошибок
«
Ответ #22 :
Ноябрь 24, 2009, 16:16 »
Если есть возможность собрать под Linux'ом, то попробуйте прогнать через valgrind.
А вообще правильно посоветовали: запустите под отладчиком и в месте сегфолта посмотрите состояние стека вызовов.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Избавляемся от ошибок
«
Ответ #23 :
Ноябрь 24, 2009, 16:21 »
Цитата: Aleksey_Zh от Ноябрь 24, 2009, 15:24
AppName: testmysqlembedded.exe AppVer: 0.0.0.0 ModName: libmysqld.dll
ModVer: 0.0.0.0 Offset: 00051f79
Это выдает винда.
D:\QTProjects\TestMySqlEmbedded\release\TestMySqlEmbedded.exe exited with code -1073741819
это выдается в консоли
Ну на этом далеко не уехать. "Консоль" имеется ввиду "консоль отладчика"
Записан
spectre71
Гость
Re: Избавляемся от ошибок
«
Ответ #24 :
Ноябрь 24, 2009, 16:49 »
Цитата: Aleksey_Zh от Ноябрь 24, 2009, 15:13
ui->setupUi(this);
this->setWindowFlags(Qt::WindowStaysOnTopHint);
QSqlDatabase TMB;
TMB = QSqlDatabase::addDatabase("QMYSQL");
TMB.setDatabaseName("tmse");
if (!TMB.open()) {
QMessageBox::critical(0, "RealtorPlus", qApp->tr("Cannot open database.\n"
"Unable to establish a database connection.\n"
"Perhaps Qt was built without database support.\n\n"
"Click Cancel to exit."), QMessageBox::Cancel);
} else {
QMessageBox::information(0,"","подключился");
Я не вижу в приведенном коде ошибки которая приводит к описанному падению.
Вероятно ошибка возникает в подгружаемых dll(sql драйверов), может стоит их переинсталлять?
Записан
SASA
Гость
Re: Избавляемся от ошибок
«
Ответ #25 :
Ноябрь 24, 2009, 18:44 »
Надо запуститься в дебаге, а не гадать на кофейной гуще.
З.Ы. Вот все ругают студию, а такие ошибки показыват без всяких valgrind, и колстек покажет, и значение переменных.
Записан
uriel
Гость
Re: Избавляемся от ошибок
«
Ответ #26 :
Ноябрь 24, 2009, 19:11 »
Понимаю, что отчасти оффтоп, поэтому сразу З.Ы.
Так с отладочной информацией тебе в теории любой отладчик такое выдаст.
Проблема-то как правило не в этом. Одно дело локализовать место падения, а другое - определить причины, которые к этому падению привели. И вот здесь уже valgrind может подсказать, что именно пошло не так: обращение по неправильному адресу, неинициализированный указатель, двойное освобождение памяти и так далее.
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Избавляемся от ошибок
«
Ответ #27 :
Ноябрь 24, 2009, 19:23 »
Цитата: SASA от Ноябрь 24, 2009, 18:44
Надо запуститься в дебаге, а не гадать на кофейной гуще.
З.Ы. Вот все ругают студию, а такие ошибки показыват без всяких valgrind, и колстек покажет, и значение переменных.
ну это любой нормальный отладчик покажет, а valrgind не отладчик
Записан
Mikhail
Программист
Offline
Сообщений: 587
Re: Избавляемся от ошибок
«
Ответ #28 :
Ноябрь 24, 2009, 19:42 »
Откомпилировал твой код и удивлен твоим вопросом.
Никаких ошибок не возникло.
Проверял на Qt 4.5.3, MSVC 2008 Express
Записан
Aleksey_Zh
Гость
Re: Избавляемся от ошибок
«
Ответ #29 :
Ноябрь 25, 2009, 10:15 »
Я и сам удивляюсь падению. На обычном мускуле все работало нормально. Думаю что могут быть проблемы в libmysqld.dll - в версии 5.1.40 на офф сайте указано, что библиотека переделывалась. Есть насчет этого какие - либо мнения?
Записан
Страниц:
1
[
2
]
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...