[英]How can I fix an app crash which is irreproducible? Crash report and console log attached
我的ios應用程序使用了很多核心數據和核心動畫。 由於多線程,它有時會以不可復制的方式崩潰。 任何編程忍者都可以幫助您解決此崩潰問題嗎? 我不知道我有一個空的mutablearray
叫做objectAtIndex
。
另外我也不知道如何跟蹤CGContext
錯誤發生的位置。 由於它不是NSException
,所以我不打算在那里設置斷點。 有人可以教我如何在CGContext
錯誤出現時設置斷點嗎?
我的控制台日志:
May 30 09:12:39 Dons-iPod-touch larklife[6914] <Warning>: EventsViewController.m 680: indexPath in finish block<NSIndexPath 0x1f18fe60> 2 indexes [1, 0]
May 30 09:12:39 Dons-iPod-touch larklife[6914] <Error>: CGContextSetFillColorWithColor: invalid context 0x0
May 30 09:12:39 Dons-iPod-touch larklife[6914] <Error>: CGContextSaveGState: invalid context 0x0
May 30 09:12:39 Dons-iPod-touch larklife[6914] <Error>: CGContextSetFlatness: invalid context 0x0
May 30 09:12:39 Dons-iPod-touch larklife[6914] <Error>: CGContextAddPath: invalid context 0x0
May 30 09:12:39 Dons-iPod-touch larklife[6914] <Error>: CGContextDrawPath: invalid context 0x0
May 30 09:12:39 Dons-iPod-touch larklife[6914] <Error>: CGContextRestoreGState: invalid context 0x0
May 30 09:12:40 Dons-iPod-touch larklife[6914] <Error>: *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x330e92a3 0x3ad6797f 0x33034b75 0x32f5bc0d 0xeb555 0xe5c9b 0x106549 0xe1521 0xebcad 0xde557 0xe4589 0xe5275 0x24b06d 0x339f7277 0x330be5df 0x330be291 0x330bcf01 0x3302febd 0x3302fd49 0x36be22eb 0x34f45301 0x206fd 0x3b19eb20)
崩潰報告:
Incident Identifier: C18D4D70-7157-4456-900B-077BDE488A70
CrashReporter Key: 7531fede04c2aea4fcfb40a804a8e2fdb0a4cb79
Hardware Model: iPod4,1
Process: larklife [6914]
Path: /var/mobile/Applications/30FAAA4E-1FC4-452F-82E2- 1E706A34A0B8/larklife.app/larklife
Identifier: larklife
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2013-05-30 09:12:40.483 -0700
OS Version: iOS 6.1.3 (10B329)
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Crashed Thread: 0
Last Exception Backtrace:
0 CoreFoundation 0x330e929e __exceptionPreprocess + 158
1 libobjc.A.dylib 0x3ad6797a objc_exception_throw + 26
2 CoreFoundation 0x33034b70 -[__NSArrayM objectAtIndex:] + 160
3 CoreData 0x32f5bc08 -[NSFetchedResultsController objectAtIndexPath:] + 236
4 larklife 0x000eb550 0x19000 + 861520
5 larklife 0x000e5c96 0x19000 + 838806
6 larklife 0x00106544 0x19000 + 972100
7 larklife 0x000e151c 0x19000 + 820508
8 larklife 0x000ebca8 0x19000 + 863400
9 larklife 0x000de552 0x19000 + 808274
10 larklife 0x000e4584 0x19000 + 832900
11 larklife 0x000e5270 0x19000 + 836208
12 larklife 0x0024b068 0x19000 + 2302056
13 Foundation 0x339f7272 __NSFireDelayedPerform + 446
14 CoreFoundation 0x330be5da __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 10
15 CoreFoundation 0x330be28c __CFRunLoopDoTimer + 268
16 CoreFoundation 0x330bcefc __CFRunLoopRun + 1228
17 CoreFoundation 0x3302feb8 CFRunLoopRunSpecific + 352
18 CoreFoundation 0x3302fd44 CFRunLoopRunInMode + 100
19 GraphicsServices 0x36be22e6 GSEventRunModal + 70
20 UIKit 0x34f452fc UIApplicationMain + 1116
21 larklife 0x000206f8 0x19000 + 30456
22 libdyld.dylib 0x3b19eb1c start + 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x3b265350 __pthread_kill + 8
1 libsystem_c.dylib 0x3b1dc11e pthread_kill + 54
2 libsystem_c.dylib 0x3b21896e abort + 90
3 libc++abi.dylib 0x3a7b6d4a abort_message + 70
4 libc++abi.dylib 0x3a7b3ff4 _ZL17default_terminatev + 20
5 libobjc.A.dylib 0x3ad67a74 _ZL15_objc_terminatev + 144
6 libc++abi.dylib 0x3a7b4078 _ZL19safe_handler_callerPFvvE + 76
7 libc++abi.dylib 0x3a7b4110 std::terminate() + 16
8 libc++abi.dylib 0x3a7b5594 __cxa_rethrow + 84
9 libobjc.A.dylib 0x3ad679cc objc_exception_rethrow + 8
10 CoreFoundation 0x3302ff1c CFRunLoopRunSpecific + 452
11 CoreFoundation 0x3302fd44 CFRunLoopRunInMode + 100
12 GraphicsServices 0x36be22e6 GSEventRunModal + 70
13 UIKit 0x34f452fc UIApplicationMain + 1116
14 larklife 0x000206f8 0x19000 + 30456
15 libdyld.dylib 0x3b19eb1c start + 0
Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0 libsystem_kernel.dylib 0x3b255648 kevent64 + 24
1 libdispatch.dylib 0x3b18e4ec _dispatch_mgr_invoke + 792
2 libdispatch.dylib 0x3b180df4 _dispatch_mgr_thread$VARIANT$up + 32
Thread 2 name: WebThread
Thread 2:
0 libsystem_kernel.dylib 0x3b254eb4 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x3b255048 mach_msg + 36
2 CoreFoundation 0x330be040 __CFRunLoopServiceMachPort + 124
3 CoreFoundation 0x330bcd9e __CFRunLoopRun + 878
4 CoreFoundation 0x3302feb8 CFRunLoopRunSpecific + 352
5 CoreFoundation 0x3302fd44 CFRunLoopRunInMode + 100
6 WebCore 0x3901d500 _ZL12RunWebThreadPv + 440
7 libsystem_c.dylib 0x3b1be30e _pthread_start + 306
8 libsystem_c.dylib 0x3b1be1d4 thread_start + 4
Thread 3:
0 libsystem_kernel.dylib 0x3b265d98 __workq_kernreturn + 8
1 libsystem_c.dylib 0x3b1b3cf6 _pthread_workq_return + 14
2 libsystem_c.dylib 0x3b1b3a12 _pthread_wqthread + 362
3 libsystem_c.dylib 0x3b1b38a0 start_wqthread + 4
Thread 4:
0 libsystem_kernel.dylib 0x3b265d98 __workq_kernreturn + 8
1 libsystem_c.dylib 0x3b1b3cf6 _pthread_workq_return + 14
2 libsystem_c.dylib 0x3b1b3a12 _pthread_wqthread + 362
3 libsystem_c.dylib 0x3b1b38a0 start_wqthread + 4
Thread 5 name: com.apple.NSURLConnectionLoader
Thread 5:
0 libsystem_kernel.dylib 0x3b254eb4 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x3b255048 mach_msg + 36
2 CoreFoundation 0x330be040 __CFRunLoopServiceMachPort + 124
3 CoreFoundation 0x330bcd9e __CFRunLoopRun + 878
4 CoreFoundation 0x3302feb8 CFRunLoopRunSpecific + 352
5 CoreFoundation 0x3302fd44 CFRunLoopRunInMode + 100
6 Foundation 0x3397c3d0 +[NSURLConnection(Loader) _resourceLoadLoop:] + 304
7 Foundation 0x339ffe80 __NSThread__main__ + 968
8 libsystem_c.dylib 0x3b1be30e _pthread_start + 306
9 libsystem_c.dylib 0x3b1be1d4 thread_start + 4
Thread 6 name: com.apple.CFSocket.private
Thread 6:
0 libsystem_kernel.dylib 0x3b265594 __select + 20
1 CoreFoundation 0x330c21f2 __CFSocketManager + 674
2 libsystem_c.dylib 0x3b1be30e _pthread_start + 306
3 libsystem_c.dylib 0x3b1be1d4 thread_start + 4
Thread 7 name: Dispatch queue: NSManagedObjectContext Queue
Thread 7:
0 CoreData 0x32ebe19c _kvcPropertysPrimitiveSetters + 0
1 CoreData 0x32edc700 _sharedIMPL_setvfk_core + 44
2 larklife 0x000ba374 0x19000 + 660340
3 CoreData 0x32ed0bf0 _PF_Handler_Public_SetProperty + 88
4 CoreData 0x32ed312a -[NSManagedObject setValue:forKey:] + 86
5 larklife 0x002314f2 0x19000 + 2196722
6 larklife 0x00060ed8 0x19000 + 294616
7 CoreFoundation 0x330dd99e __NSArrayEnumerate + 394
8 CoreFoundation 0x3303fb66 -[NSArray enumerateObjectsWithOptions:usingBlock:] + 58
9 larklife 0x00060d44 0x19000 + 294212
10 larklife 0x0005d204 0x19000 + 279044
11 CoreData 0x32ee6072 developerSubmittedBlockToNSManagedObjectContextPerform_privateasync + 66
12 libdispatch.dylib 0x3b17e996 _dispatch_queue_drain$VARIANT$up + 142
13 libdispatch.dylib 0x3b17e890 _dispatch_queue_invoke$VARIANT$up + 32
14 libdispatch.dylib 0x3b18d212 _dispatch_root_queue_drain + 190
15 libdispatch.dylib 0x3b18d3b4 _dispatch_worker_thread2 + 80
16 libsystem_c.dylib 0x3b1b3a0e _pthread_wqthread + 358
17 libsystem_c.dylib 0x3b1b38a0 start_wqthread + 4
Thread 0 crashed with ARM Thread State (32-bit):
r0: 0x00000000 r1: 0x00000000 r2: 0x00000000 r3: 0x3cd16534
r4: 0x00000006 r5: 0x3cd16b88 r6: 0x1f483d54 r7: 0x2fde7a04
r8: 0x1f483d30 r9: 0x00000400 r10: 0x00000000 r11: 0x00000000
ip: 0x00000148 sp: 0x2fde79f8 lr: 0x3b1dc123 pc: 0x3b265350
cpsr: 0x00080010
您的錯誤消息說:
[__NSArrayM objectAtIndex:]:索引0超出范圍
。 原因可能是使用NSMUtableArray
( __NSArrayM
) 並不是線程安全的 ,請參見此處 。
如果沒有提供任何代碼,建議您仔細閱讀引用的《線程編程指南》,並相應地更正代碼。
在events viewcontroller.m
,您使用的數組在索引0和1處為空。請檢查代碼160和236中是否出現錯誤。 這絕對與獲取數據有關。 似乎無法從您的存儲中獲取數據。 這是我沒有看到實際代碼收集的。
您試圖獲取一個空數組的第一個元素,這會導致崩潰,並且異常是不言自明的。
您可以使用po
命令(打印對象)在應用程序崩潰時調試數組:
po the_array_object
另外,請確保在斷點導航器中將斷點設置為ON
,以使編譯器更好地進行調試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.