2013-05-02 34 views
10

Cách đọc mã lỗi xuất hiện trong bảng điều khiển?những gì "thoát bất thường với tín hiệu 9: Bị giết: 9" có nghĩa là

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

Ở đây tín hiệu 9 có nghĩa là gì, có thêm bất kỳ tín hiệu nào ngoài nó không. Bất kỳ tài liệu nào có sẵn cho nó.

Tôi nhận được loại lỗi này, khi một ứng dụng. được khởi chạy từ Xcode được chấm dứt bằng nút "Stop" trong thanh công cụ Xcode.

{Cách khác để nhận lỗi này là, nhấn nút trang chủ, sau đó nhấn đúp vào nút trang chủ và đóng ứng dụng. }

Mọi thứ trở nên tồi tệ hơn khi tôi khởi chạy Ứng dụng. lần nữa, bằng cách nhấn vào Ứng dụng. biểu tượng trên màn hình iPad, ứng dụng bị treo và ném "libMobileGestalt copySystemVersionDictionaryValue: Không thể tra cứu ReleaseType từ từ điển phiên bản hệ thống"

Từ tìm kiếm trên tràn ngăn xếp, tôi thấy lỗi này được tìm thấy trong thiết bị iOS 6.

url states này rằng đó là một lỗi SIGKILL và nó sẽ xảy ra khi "ứng dụng đã được chấm dứt ngay lập tức, mà không cần bất kỳ cơ hội để làm sạch hoặc đánh bắt và xử lý tín hiệu"

Vì vậy, tôi nghĩ rằng giải phóng objets trong "- (void) didReceiveMemoryWarning "sẽ không giúp đỡ để giải quyết nó, sau đó những gì có thể là một giải pháp xác định?

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

Hãy xem [man page. signal.h] (http://developer.apple.com/library/ios/#documentation/system/conceptual/manpages_iphoneos/man3/signal.3.html) cho tất cả hệ thống- tín hiệu được xác định. – nif

Trả lời

0

Trên hệ thống UNIX theo cách thông thường để buộc chấm dứt một quá trình ứng dụng là với

kill -9 PROCESS_ID 

này gửi ứng dụng tín hiệu số chín có nghĩa là: "bạn bỏ thuốc lá, NOW"

chung các ngoại lệ chưa được xử lý cũng sẽ khiến cho hệ điều hành chấm dứt các ứng dụng bằng tín hiệu này. Ngoài ra giết chết một ứng dụng thông qua "switcher nhiệm vụ" làm điều tương tự.

0

trong linux có khoảng 64 tín hiệu (hơn 64 trong một số hệ thống) .. nếu bạn muốn xem tất cả các tín hiệu đánh số chỉ cần gõ "kill -l" mà không báo giá trên thiết bị đầu cuối, bạn sẽ thấy tất cả danh sách tín hiệu . các tín hiệu được nhân tạo tạo ra hoặc bằng cách giết người dùng hệ thống trên ứng dụng cụ thể (ví dụ: kill -n app_name). tín hiệu 9 là SIGKILL này được sử dụng để giết ứng dụng. mặc dù chúng ta cũng có thể che dấu một số tín hiệu nhưng không phải tất cả các tín hiệu đều có thể được che dấu trong một ứng dụng. cho ref trong tương lai. u có thể đi đây

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

và cũng thấy man page của tín hiệu, bạn sẽ tìm hiểu thêm

3

Nó có nghĩa là ứng dụng nhận được một tín hiệu. Một số tín hiệu có thể được xử lý bởi các ứng dụng, những người khác, không. Tín hiệu 9 có nghĩa là ứng dụng cần phải bị giết, nó không được xử lý bởi tiến trình, mà bởi trình lên lịch Linux. Các tín hiệu để chấm dứt quá trình đó được xử lý bởi quá trình này là SIGTERM (15), nhưng, nếu quá trình không xử lý tài sản, sau đó quá trình tiếp tục sống.

đây là những tín hiệu chính:

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

Tôi biết câu hỏi ban đầu đã được hỏi những gì tín hiệu 9 có ý nghĩa, nhưng tôi thấy điều này trong khi tìm kiếm làm thế nào để ngăn chặn nó.

Đối với tôi đây là do cách gửi một thông báo địa phương và không thực hiện

application:didReceiveLocalNotification 

trong appdelegate tôi. Một khi tôi đã làm điều này, ngay cả với phương pháp trống vụ tai nạn đã không xuất hiện trở lại. Rất có thể có điều gì đó đang được gọi bởi hệ thống không được mã của bạn xử lý.

Các vấn đề liên quan