2012-02-09 44 views
5

我有以下崩潰,我無法在需求下複製,但確實發生了足以讓用戶注意到的情況。進入崩潰的底部

此崩潰報告也已被標記。你會如何找出原因!這似乎只發生在4.1

Exception Type: SIGSEGV 
Exception Codes: SEGV_ACCERR at 0x9f069184 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libobjc.A.dylib      0x000027d8 objc_msgSend + 16 
1 CoreFoundation      0x0007d749 ____CFXNotificationPost_old_block_invoke_1 + 45 
2 libSystem.B.dylib     0x000d5984 _dispatch_call_block_and_release + 20 
3 libSystem.B.dylib     0x000d66b0 _dispatch_continuation_pop + 72 
4 libSystem.B.dylib     0x000d69fc _dispatch_main_queue_callback_4CF + 220 
5 CoreFoundation      0x0002789b __CFRunLoopRun + 1335 
6 CoreFoundation      0x00027277 CFRunLoopRunSpecific + 231 
7 CoreFoundation      0x0002717f CFRunLoopRunInMode + 59 
8 GraphicsServices     0x000045f3 GSEventRunModal + 115 
9 GraphicsServices     0x0000469f GSEventRun + 63 
10 UIKit        0x00004123 -[UIApplication _run] + 403 
11 UIKit        0x0000212f UIApplicationMain + 671 
12 MyApp        0x000024e3 main (main.m:17) 

我已經設法得到更多的信息,但沒有太多。

2012-02-12 18:03:04.556 MyApp[462:307] (null): unrecognized selector sent to class 0x3e0a360c 
2012-02-12 18:03:04.618 MyApp[462:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '(null): unrecognized selector sent to class 0x3e0a360c' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x33506ed3 __exceptionPreprocess + 114 
    1 libobjc.A.dylib      0x30412811 objc_exception_throw + 24 
    2 CoreFoundation      0x335086ff +[NSObject(NSObject) doesNotRecognizeSelector:] + 102 
    3 CoreFoundation      0x334b01d9 ___forwarding___ + 508 
    4 CoreFoundation      0x334aff90 _CF_forwarding_prep_0 + 48 
    5 Foundation       0x302a86b3 _nsnote_callback + 142 
    6 CoreFoundation      0x334e4749 ____CFXNotificationPost_old_block_invoke_1 + 44 
    7 libSystem.B.dylib     0x31d05984 _dispatch_call_block_and_release + 20 
    8 libSystem.B.dylib     0x31d066b0 _dispatch_continuation_pop + 72 
    9 libSystem.B.dylib     0x31d069fc _dispatch_main_queue_callback_4CF + 220 
    10 CoreFoundation      0x3348e89b __CFRunLoopRun + 1334 
    11 CoreFoundation      0x3348e277 CFRunLoopRunSpecific + 230 
    12 CoreFoundation      0x3348e17f CFRunLoopRunInMode + 58 
    13 GraphicsServices     0x31b5e5f3 GSEventRunModal + 114 
    14 GraphicsServices     0x31b5e69f GSEventRun + 62 
    15 UIKit        0x341bd123 -[UIApplication _run] + 402 
    16 UIKit        0x341bb12f UIApplicationMain + 670 

現在我所有的addObservers都是基於塊的,所以我不明白爲什麼它會導致無法識別的選擇器。

+0

我不知道,所以我沒有發佈答案,但它看起來像試圖調用已經發布的Block? – Jasarien 2012-02-09 11:12:18

+1

不知道這是否是原因,但我會檢查是否在釋放之前將對象作爲觀察者(到'NSNotificationCenter')移除。 – 2012-02-09 11:18:33

+0

僅僅因爲NSNotification,你的崩潰是肯定的嗎?嘗試註釋掉該代碼並運行。 – Mrunal 2012-02-12 13:47:04

回答

2

這種方式在調試崩潰時不會幫助我們很多。我發現調試Crash代碼的最佳方法之一。按照鏈接,調試技術:

http://cocoadev.com/DebuggingAutorelease

你需要非常仔細地分析您的控制檯來實際看看爲什麼發生崩潰。這讓我幾乎所有的都沒有啓用ARC守則......

希望這能幫助你....

的nJoy編碼... :)

+0

謝謝,這幫了很多! – 2012-02-12 21:42:18

+0

歡迎隨時.... :) – DShah 2012-02-13 04:52:56

+0

鏈接丟失。 – trojanfoe 2013-08-30 05:52:59