2012-01-06 3 views
0

Мое приложение должно выполнить некоторую обработку после получения «SIGUSR2».XCode - приложение для отладки с сигналами

Поэтому я использую signal() для замены обработчика сигнала по умолчанию в системе mime.

Во время отладки в XCode я сигнализирую приложению «kill -31 pid» в командной строке, а затем приложение останавливается на строке кода. После того, как я его продолжу, приложение запускается без вызова обработчика сигналов mime.

Кажется, что XCode съедает сам сигнал ...

Как я могу сделать это прямо во время отладки в XCode?

+0

Он работает хорошо вне XCode ... – notgeek

+0

я найти способ борьбы с ним. Приостановите приложение, введите «handle SIGUSR2 nostop» в XDode GDB cmdline, а затем Xcode не будет есть сигнал, и приложение может обработать сам целевой сигнал. Надеясь, что будут какие-то более умные пути! – notgeek

ответ

0

Хм, делал кое-что с кодом, который имел сигналы в последнее время. Во-первых, вам нужно понять, как GDB обрабатывает сигналы. Я не уверен, что это в документации или нет, поэтому копайте в сети. Из того, что я помню, чтение, GDB перехватывает некоторые сигналы, так что отладчик может работать правильно. Это было бы причиной того, что приложение не работает должным образом.

Я не авторитет на этом каким-либо образом, но в коде, который я рассматривал, использование сигналов было похоже на неправильную вещь. iOS SDK имеет целый ряд функций для обработки межпроцессорных коммуникаций, последовательности задач и других вещей. Возможно, ваш код выиграет от R & D и перепроектирует, чтобы вам не нужны сигналы.

Просто мысль :-)

+0

Работает на Mac OS X, а не на приложении IOS. Это похоже на своего рода демонов. Сигнал здесь используется только для тестирования, но проблема беспокоит. – notgeek

+0

Хорошо, проверьте, что отключает отладчик. Из того, что я читал, я не думаю, что вы можете много сделать, или захотите, поскольку это, скорее всего, сделает отладчик неустойчивым как таковой. Это мое понимание. – drekka

Смежные вопросы