我在ipad 1中运行我的ios应用程序,在应用程序运行时发生以下崩溃,我不知道崩溃发生在哪里。这主要发生在ios 5.1.1中。这里是崩溃日志,
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xf0000008
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib 0x3387ef78 objc_msgSend + 16
1 UIKit 0x333ffa3a -[UIViewController unloadViewForced:] + 254
2 UIKit 0x335473a6 -[UIViewController purgeMemoryForReason:] + 58
3 Foundation 0x3507a4f8 __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_0 + 12
4 CoreFoundation 0x35c2c540 ___CFXNotificationPost_block_invoke_0 + 64
5 CoreFoundation 0x35bb8090 _CFXNotificationPost + 1400
6 Foundation 0x34fee3e4 -[NSNotificationCenter postNotificationName:object:userInfo:] + 60
7 Foundation 0x34fefc14 -[NSNotificationCenter postNotificationName:object:] + 24
8 UIKit 0x335120e6 -[UIApplication _performMemoryWarning] + 74
9 UIKit 0x335121e0 -[UIApplication _receivedMemoryNotification] + 168
10 libdispatch.dylib 0x33ffb252 _dispatch_source_invoke + 510
11 libdispatch.dylib 0x33ff8b1e _dispatch_queue_invoke$VARIANT$up + 42
12 libdispatch.dylib 0x33ff8e64 _dispatch_main_queue_callback_4CF$VARIANT$up + 152
13 CoreFoundation 0x35c332a6 __CFRunLoopRun + 1262
14 CoreFoundation 0x35bb649e CFRunLoopRunSpecific + 294
15 CoreFoundation 0x35bb6366 CFRunLoopRunInMode + 98
16 GraphicsServices 0x33951432 GSEventRunModal + 130
17 UIKit 0x3338ecce UIApplicationMain + 1074
18 MY Game 0x00079a90 0x75000 + 19088
19 MY Game 0x00079a50 0x75000 + 19024
据我所知,从崩溃日志中,由于我的代码,崩溃不会发生。这是由于内存不足。那是对的吗?如何找到崩溃发生的地方?任何建议。
答案 0 :(得分:2)
据我所知,从崩溃日志中,由于我的代码,崩溃不会发生。这是由于内存不足。这是对的吗?
不,这不正确。
正在报告内存不足,但您的视图控制器没有正确响应。最常见的原因是保留周期 - see UIViewController purgeMemoryForReason: Crashing on iOS 5。在该答案中,保留周期为SVPullToRefresh
,但您的保留周期可能在其他地方。保留周期的最常见原因是未将delegate
属性设置为weak
。
一旦找出问题所在,就可以在viewDidUnload
和``didReceiveMemoryWarning`中设置断点,模拟内存警告,并逐步查看代码以查找错误。
此外,此崩溃报告未符号化。通常,您首先要表示崩溃报告。例如,请参阅以下行:
18 MY Game 0x00079a90 0x75000 + 19088
19 MY Game 0x00079a50 0x75000 + 19024
在这种情况下,正如Kerni所指出的那样,这两个人只会显示start
和main
,所以在这种情况下他们不会帮助你。但通常,您应该表示崩溃报告。 (如果您不知道如何执行此操作,请搜索“Xccode symbolicate crash logs”。)