Russian Qt Forum

Qt => Qt Embedded => Тема начата: mad Mr F. от Август 05, 2011, 15:44



Название: Некорректное завершение приложения.
Отправлено: 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 не использовать, а ограничится с/с++ то все нормально.
Сам даже не знаю куда смотреть...


Название: Re: Некорректное завершение приложения.
Отправлено: Пантер от Август 05, 2011, 15:46
Есть возможность продебажить на арме?
Давай на всякий случай версию Qt и параметры сборки.


Название: Re: Некорректное завершение приложения.
Отправлено: mad Mr F. от Август 05, 2011, 15:49
Продебажить на арме возможности пока нет. Какие параметры сказать? Qt 4.6.3

ЗЫ: в чем хоть примерно может быть причина? Я это заметил-то случайно, специфика такая что вкл/выкл у железки, ровно как и у ПО на ней просто нет. Только кнопка питания.


Название: Re: Некорректное завершение приложения.
Отправлено: Пантер от Август 05, 2011, 16:00
А может забить на это ? ;)


Название: Re: Некорректное завершение приложения.
Отправлено: mad Mr F. от Август 05, 2011, 16:03
Был такой мысль, но нелегкая дернула прогу написать у которой нужно корректно завершится...


Название: Re: Некорректное завершение приложения.
Отправлено: ритт от Август 06, 2011, 13:36
если используете кутишные классы, инстанциируйте QCoreApplication.
по крайней мере, это то, что вижу из сниппета выше. я не говорю, что это гарантирует решение Вашей проблемы, но как минимум, так правильно.


Название: Re: Некорректное завершение приложения.
Отправлено: Sancho_s_rancho от Август 07, 2011, 13:41
+1 за QCoreApplication
Qt - это фреймвок, а не библиотека.


Название: Re: Некорректное завершение приложения.
Отправлено: mad Mr F. от Август 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.


Название: Re: Некорректное завершение приложения.
Отправлено: gogi от Август 08, 2011, 09:59
Сам даже не знаю куда смотреть...

Попробуй стандартные strace, gdb.