Что "вышло аномально с сигналом 9: убито: 9" означает
Как читать коды ошибок, которые появляются в консоли?
<Warning>: ....... -exited abnormally with signal 9: Killed: 9
<Warning>: ....... -1 err = Bad file descriptor (0x00000009)
Здесь то, что означает сигнал 9, есть ли больше никаких сигналов. Доступна любая документация.
Я получаю такую ошибку, когда приложение. запущенный из Xcode, завершается кнопкой "Стоп" в панели инструментов Xcode.
{Еще один способ получить эту ошибку: нажать кнопку "домой", затем дважды нажать кнопку "домой" и закрыть приложение.
}
Вещи еще хуже, когда я запускаю приложение. снова, нажав на App. значок на экране iPad, приложение вылетает и бросает "libMobileGestalt copySystemVersionDictionaryValue: не удалось найти ReleaseType из словаря версии системы"
От поиска при переполнении стека я вижу, что эта ошибка обнаружена в устройствах iOS 6.
Этот url утверждает, что это ошибка SIGKILL, и это происходит, когда "приложение завершается немедленно, без каких-либо шансов очистить или поймать и обработать сигнал"
Итак, я думаю, что освобождение объектов в "- (void) didReceiveMemoryWarning" не помогло бы его решить, тогда какое может быть определенное решение?
-(void) didReceiveMemoryWarning{
[super didReceiveMemoryWarning];
//release objects
obj1=nil;
[view1 removeFromSuperView];
view1=nil;
........
}
Ответы
Ответ 1
Это означает, что приложение получило сигнал. Некоторые сигналы могут обрабатываться приложениями, другие - нет. Сигнал 9 означает, что приложение нужно убить, оно не обрабатывается процессом, а планировщиком Linux. Сигналом для завершения процесса, который обрабатывается процессом, является SIGTERM (15), но если процесс не обрабатывает его свойство, то процесс продолжает жить.
вот основные сигналы:
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
SIGHUP 1 Term Hangup detected on controlling terminal
or death of controlling process
SIGINT 2 Term Interrupt from keyboard
SIGQUIT 3 Core Quit from keyboard
SIGILL 4 Core Illegal Instruction
SIGABRT 6 Core Abort signal from abort(3)
SIGFPE 8 Core Floating point exception
SIGKILL 9 Term Kill signal
SIGSEGV 11 Core Invalid memory reference
SIGPIPE 13 Term Broken pipe: write to pipe with no
readers
SIGALRM 14 Term Timer signal from alarm(2)
SIGTERM 15 Term Termination signal
SIGUSR1 30,10,16 Term User-defined signal 1
SIGUSR2 31,12,17 Term User-defined signal 2
SIGCHLD 20,17,18 Ign Child stopped or terminated
SIGCONT 19,18,25 Cont Continue if stopped
SIGSTOP 17,19,23 Stop Stop process
SIGTSTP 18,20,24 Stop Stop typed at terminal
SIGTTIN 21,21,26 Stop Terminal input for background process
SIGTTOU 22,22,27 Stop Terminal output for background process
Ответ 2
Я знаю, что исходный вопрос задавал вопрос, что означает сигнал 9, но я нашел это, ища, как его предотвратить.
Для меня это было вызвано отправкой локального уведомления и не реализованием
application:didReceiveLocalNotification
в моем AppDelegate. Как только я это сделал, даже при пустом методе крах не появился снова. Скорее всего, есть что-то, вызываемое системой, которая не обрабатывается вашим кодом.
Ответ 3
В системах UNIX обычным способом принудительного завершения процесса приложения является
kill -9 PROCESS_ID
Это отправляет приложению номер сигнала девять, что означает: "вы уходите, СЕЙЧАС"
Вообще необработанные исключения также заставят ОС прекратить приложения с этим сигналом. Также убийство приложения через "переключатель задач" делает то же самое.
Ответ 4
в linux имеется около 64 сигналов (более 64 в некоторой системе). Если вы хотите увидеть все нумерации сигналов, просто введите "kill -l" без цитаты на терминале, вы увидите весь список сигналов. сигналы генерируются ядром или путем вызова системы kill пользователем в конкретном приложении (например, kill -n app_name). сигнал 9 является SIGKILL, это используется для уничтожения приложения. хотя мы также можем маскировать некоторые из сигналов, но не все сигналы могут быть замаскированы в приложении. для будущего ref. вы можете пойти здесь
http://en.wikipedia.org/wiki/Unix_signal
а также увидеть страницу руководства для сигнала, которую вы узнаете больше