如何读取控制台中出现的错误代码?
<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 states表示这是一个SIGKILL错误,当“应用程序立即终止,没有任何机会清理或捕获并处理信号”时会发生错误“
所以,我认为在“ - (void)didReceiveMemoryWarning”中释放objets无助于解决它,那么什么可以是一个明确的解决方案?
-(void) didReceiveMemoryWarning{
[super didReceiveMemoryWarning];
//release objects
obj1=nil;
[view1 removeFromSuperView];
view1=nil;
........
}
答案 0 :(得分:5)
这意味着应用程序收到了一个信号。有些信号可以由应用程序处理,有些则不是。信号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
答案 1 :(得分:1)
在UNIX系统上,强制终止应用程序进程的正常方法是使用
kill -9 PROCESS_ID
这会向应用程序发送信号编号9,这意味着:“你现在就退出”
通常未处理的异常也会导致操作系统使用此信号终止应用程序。通过“任务切换器”杀死应用程序也可以做同样的事情。
答案 2 :(得分:1)
我知道最初的问题是询问信号9是什么意思,但我在寻找如何预防时发现了这一点。
对我而言,这是由发送本地通知而未实施
引起的application:didReceiveLocalNotification
在我的AppDelegate中。一旦我这样做,即使方法为空,崩溃也不会重新出现。有可能系统调用的东西没有被你的代码处理。
答案 3 :(得分:0)
http://en.wikipedia.org/wiki/Unix_signal
并且还会看到信号的手册页,您将了解更多信息