У меня такой вопрос.Моё приложение ,вдруг падает.Я подозреваю, что по какй-либо причине приходит сигнал.Но как определить какой сигнал пришёл?Для большинства сигналов я (для отладки) написал функции, выдающие на терминал номер сигнала.Но как быть с теми сигналами,которым нельзя дать функцию-обработчик?Я имею в виду SIGSTOP и SIGKILL.
Заранее спасибо.
опознование сигнала (опознование сигнала)
Модератор: Модераторы разделов
-
sim1
- Сообщения: 155
- ОС: GNU,BSD
Re: опознование сигнала
А может быть оно падает из-за внутренних ошибок ? Через отладчик не пытались выяснить причину ?
Разработка программ для *nix
-
rapa
- Сообщения: 29
- ОС: Linux Fedora 8
Re: опознование сигнала
Согласен,что это может быть причина,но:
1.В 98% случаев,приложение работает нормально, и только в 2% падает.
2.С отладчиком проблемно, т.к. пишу для Linux Embedded да и ещё в моём компиляторе нет отладчика под нужную архитектуру(ARM).
-
sim1
- Сообщения: 155
- ОС: GNU,BSD
Re: опознование сигнала
Это не аргумент система может хоть десять лет работать без сбоя, а потом произойдет событие, неучтенное разработчиком, и все упадет.
Тоже этим балуюсь, для отладки на целевой платформе использую:
gdb target remote tcp:host:port на инструменталке + gdbserver на целевой платформе.
Если нет сети то по порту.
Отладчик можно собрать.
Разработка программ для *nix
-
rapa
- Сообщения: 29
- ОС: Linux Fedora 8
-
sim1
- Сообщения: 155
- ОС: GNU,BSD
Re: опознование сигнала
я так понимаю у вас кросскомпилятор есть и вы им успешно пользуетесь ? Тогда скачиваете исходники gdb от сюда http://ftp.gnu.org/gnu/gdb/
Конфигурите, как обычно для кросскомпилятора
/gdb/configure --build=x86 --host=arm-linux
--build - платформа где собираемся
--host - где будем запускать
соответственно для приведенного выше примера, утилиты кросскомпилятора будут вызываться с префиксом "arm-linux", то есть arm-linux-gcc, arm-linux-ld и т.д.
ну и после этого кроскомпилимся
Разработка программ для *nix