2013-05-02 108 views
10

如何讀取出現在控制檯中的錯誤代碼?什麼是「信號異常退出9:已殺死:9」是指

<Warning>: ....... -exited abnormally with signal 9: Killed: 9 
<Warning>: ....... -1 err = Bad file descriptor (0x00000009) 

這裏信號9是什麼意思,除此之外還有更多的信號。任何可用的文檔。

我得到這種錯誤,當一個應用程序。從Xcode啓動的終止由Xcode工具欄中的「停止」按鈕終止。

{獲得此錯誤的另一種方法是,按主頁按鈕,然後雙擊主頁按鈕並關閉應用程序。 }

當我啓動應用程序時,事情會變得更糟。 再次,通過點擊應用程序。圖標在iPad屏幕上,應用程序崩潰並引發「libMobileGestalt copySystemVersionDictionaryValue:無法從系統版本字典查找ReleaseType」

從查找堆棧溢出,我看到這個錯誤是在iOS 6設備中找到。

url states,這是一個SIGKILL錯誤,它發生在「應用程序被立即終止,沒有任何機會,以清理或捕獲並處理信號」

所以,我認爲在「釋放OBJETS - (空)didReceiveMemoryWarning「無助於解決它,那麼什麼可能是一個明確的解決方案?

-(void) didReceiveMemoryWarning{ 
    [super didReceiveMemoryWarning]; 
    //release objects 
    obj1=nil; 
    [view1 removeFromSuperView]; 
    view1=nil; 
    ........ 
} 
+0

查看[signal.h手冊頁](http://developer.apple.com/library/ios/#documentation/system/conceptual/manpages_iphoneos/man3/signal.3.html)定義的信號。 – nif 2013-06-20 16:39:53

回答

0

在UNIX系統上正常的方式來強制終止應用程序是

kill -9 PROCESS_ID 

這會將應用程序的信號九數,這意味着:「你不幹,現在」

一般未處理的異常也會導致操作系統終止使用此信號的應用程序。通過「任務切換器」來殺死應用程序也是一樣。

0

在linux中,大約有64個信號(在某些系統中超過64個)..如果你想看到所有的信號編號只需在終端輸入「kill -l」而沒有引號,你會看到所有的信號列表。信號由內核或用戶在特定應用程序上的kill系統調用產生(例如kill -n app_name)。信號9是SIGKILL這是用來殺死應用程序的。儘管我們也可以屏蔽一些信號,但並不是所有的信號都可以在應用程序中被屏蔽掉。供將來參考。 ü可以去這裏

http://en.wikipedia.org/wiki/Unix_signal

,也看到信號,你會結識更多的

3

這意味着應用程序接收到的信號的手冊頁。一些信號可以由應用程序處理,而另一些則不可以。信號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

我才知道,原來問題是問這是什麼信號9的意思,但我發現這一點的同時尋找如何防止它。

對我來說,這是通過發送本地通知,並在我的AppDelegate不執行

application:didReceiveLocalNotification 

引起的。一旦我做到了這一點,即使方法清空,崩潰也不會再次出現。有可能是由系統調用的東西沒有被你的代碼處理。

相關問題