2013-06-03 1 views
0

내 ios 응용 프로그램은 많은 코어 데이터 및 코어 애니메이션을 사용했습니다. 멀티 스레딩 때문에 때때로 재현 불가능한 방식으로 충돌합니다. 어떤 프로그래밍 닌자가이 충돌 문제를 조사하는 데 도움이 될 수 있습니까? mutablearrayobjectAtIndex으로 불려지는 곳이 어디인지 알지 못합니다.재현 불가능한 앱 크래시를 어떻게 수정합니까? 오류 보고서 및 콘솔 로그가 첨부 됨

또한 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 
+0

먼저 충돌 보고서를 상징화해야합니다. –

+0

어떻게하면됩니까? – YoungLion

답변

1

하면 오류 메시지가 말했다 :

[__NSArrayM objectAtIndex :] : 범위

넘어 인덱스 0

. 그 이유는 아마도 NSMUtableArray (__NSArrayM) 을 사용하는 것이 스레드 안전하지 않습니다., here을 참조하십시오.
제공된 코드가 없으면 매우주의 깊게 언급 된 스레딩 프로그래밍 가이드를 읽고 그에 따라 코드를 수정하는 것이 좋습니다.

1

events viewcontroller.m에서 사용 된 배열은 인덱스 0과 1에서 비어있었습니다. 코드에서 160과 236에서 발생한 오류를 확인하십시오. 그것은 확실히 데이터를 가져 오는 것과 관련이 있습니다. 그것은 당신이 가게에서 데이터를 가져올 수없는 것 같습니다. 그것은 실제 코드를 보지 않고 수집하는 것입니다.

1

크래시와 예외를 생성하는 빈 배열의 첫 번째 요소를 가져 오려고하면 자체 설명이됩니다.

po the_array_object

또한

, 당신은 순서대로 중단 탐색기에서 중단 점 ON을 설정해야합니다 더 나은 디버깅 박히하려면 : po 명령 (인쇄 개체)를 사용하여 응용 프로그램이 충돌 할 때

당신은 배열을 디버깅 할 수 있습니다 컴파일러에서.