Russian Qt Forum
Ноябрь 24, 2024, 17:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Некорректное завершение приложения.  (Прочитано 5650 раз)
mad Mr F.
Гость
« : Август 05, 2011, 15:44 »

Картина такая. Любая Qt прога на арме завершается с seg faul. На арме линукс, прогу собираю статически на персоналке. Прога запускается и прекрасно работает, но когда пришло время проге завершится получаем seg fault. Т.е. она может хоть неделю корректно работать на выходе ошибка.
Для конкретности приведу такой код:
Код
C++ (Qt)
int main(int , char* argv[], char** ){
   QString str( argv[ 0]);
   printf( "%s is very simple programm!\n", str.toAscii().data());
   printf("Quit.\n");
   return 0;
}
Печатает все, что должен и потом выдает ошибку сегментирования. Код может быть любым. Если Qt не использовать, а ограничится с/с++ то все нормально.
Сам даже не знаю куда смотреть...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 05, 2011, 15:46 »

Есть возможность продебажить на арме?
Давай на всякий случай версию Qt и параметры сборки.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
mad Mr F.
Гость
« Ответ #2 : Август 05, 2011, 15:49 »

Продебажить на арме возможности пока нет. Какие параметры сказать? Qt 4.6.3

ЗЫ: в чем хоть примерно может быть причина? Я это заметил-то случайно, специфика такая что вкл/выкл у железки, ровно как и у ПО на ней просто нет. Только кнопка питания.
« Последнее редактирование: Август 05, 2011, 22:39 от mad Mr F. » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Август 05, 2011, 16:00 »

А может забить на это ? Подмигивающий
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
mad Mr F.
Гость
« Ответ #4 : Август 05, 2011, 16:03 »

Был такой мысль, но нелегкая дернула прогу написать у которой нужно корректно завершится...
Записан
ритт
Гость
« Ответ #5 : Август 06, 2011, 13:36 »

если используете кутишные классы, инстанциируйте QCoreApplication.
по крайней мере, это то, что вижу из сниппета выше. я не говорю, что это гарантирует решение Вашей проблемы, но как минимум, так правильно.
Записан
Sancho_s_rancho
Гость
« Ответ #6 : Август 07, 2011, 13:41 »

+1 за QCoreApplication
Qt - это фреймвок, а не библиотека.
Записан
mad Mr F.
Гость
« Ответ #7 : Август 08, 2011, 08:21 »

Код был приведен для примера, наличие QCoreApplication не меняет картины вещей.
Такой код ведет себя так же:
Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QtCore/QTimer>
 
int main(int argc, char* argv[], char** ){
   QCoreApplication app( argc, argv);
   qWarning( "%s is very simple programm!", argv[ 0]);
   QTimer timer;
   QObject::connect( &timer, SIGNAL(timeout()), &app, SLOT( quit()));
   timer.start( 3000);
   int res = app.exec();
   qWarning("Quit.");
   return res;
}
Т.е. на персоналке он запускается, пишет что он дико простой, ждет 3 секунды, пишет quit и нормально завершается. На арме он делает все тоже самое, но завершается с seg fault.
« Последнее редактирование: Август 08, 2011, 08:38 от mad Mr F. » Записан
gogi
Гость
« Ответ #8 : Август 08, 2011, 09:59 »

Сам даже не знаю куда смотреть...

Попробуй стандартные strace, gdb.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.112 секунд. Запросов: 23.