저는 숙련 된 프로그래머 (일반적으로 &, 특히 Cocos2D)의 조언을 받아 여기에 게시하고 있습니다.컴파일러 경고없이 Cocos2D v2.1 및 arm64가 충돌합니다.
저는 몇 곳에서 Cocos2D v2.1을 사용하는 예전 프로젝트가 있습니다. 그렇지 않으면 표준 UIKit입니다. 나는 arm64와 호환되도록 업데이트했기 때문에 모든 컴파일러 경고를 제거하고 시뮬레이터에서 성공적으로 응용 프로그램을 실행할 수있었습니다. 그러나, 나는 방금 iPad Air 사용자로부터 Cocos2d 부분이 충돌한다는 버그 보고서를 받았습니다.
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000010
Triggered by Thread: 0
Thread 0 Crashed:
0 libobjc.A.dylib 0x00000001995101d0 0x1994f8000 + 98768
1 0x000000010014e820 -[CCTimer update:] + 152
2 0x0000000100152140 -[CCScheduler update:] + 420
3 0x000000010016ab30 -[CCDirectorIOS drawScene] + 172
내가 말처럼,이 시뮬레이터에는 컴파일러 경고 및 모든 작품은, 그래서 내가 좀 그것을 해결하는 방법에 같이 붙어 있어요. 나는
그러나, 나는 단지 응용 프로그램의 작은 부분에 대한적인 Cocos2D를 사용하는 일반적인 두 가지 옵션이 1. 제거 arm64 2. 업그레이드적인 Cocos2D에 3.0로 될 것을 알고, 그래서 나는 아마도 내가 것으로 기대했다 간단한 수정이 누락되었습니다. 나는 Cocos2D에 익숙하지 않고 일반적으로 디버깅을하기 때문에 약간의 충고를 원한다면 잃어버린 원인이되고 다른 두 가지 옵션 중 하나에 시간을 보내야한다. 아니면 내가 할 수있는 간단한 것이있다. 나는 지금 당장 놓치고있다. 나는 CCTimer update:
메서드를 통해 살펴 보았고, 코드에서 약간의 수레가 돋보였습니다. 32/64 비트 사이에서 문제가 될 수 있지만 컴파일러 경고 없이는 손실이 발생했습니다.
UPDATE는 그래서 mysteriouser 및 mysteriouser을 가져옵니다. 나는 새로운 iPad Air를 시뮬레이터 대신 로컬에서 테스트하기 위해 구입했으며, 작동한다. 충돌 없음. 사용자가 단순히 결함이있는 장치를 가지고 있습니까? 나는 예외가 다소 이상하게 보인 KERN_INVALID_ADDRESS at 0x0000000000000010
에 던져진 것을 알아 차렸다. 온라인에서 본 대부분의 유사한 충돌 보고서에는 완전히 다른 주소가있어 훨씬 더 무작위로 보입니다.
업데이트 2
더 신비. 로컬 버전이 장치 (XCode를 통해 실행)에서 작동하는 동안 AppStore에서 실제로 다운로드 한 응용 프로그램이 충돌합니다! Device Logs에서 더 자세한 정보를 얻을 수있었습니다 :
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000010
Triggered by Thread: 0
Thread 0 Crashed:
0 libobjc.A.dylib 0x0000000196c041d0 objc_msgSend + 16
1 0x00000001001da820 -[CCTimer update:] + 152
2 0x00000001001de140 -[CCScheduler update:] + 420
3 0x00000001001f6b30 -[CCDirectorIOS drawScene] + 172
4 QuartzCore 0x000000018cf40cb8 CA::Display::DisplayLinkItem::dispatch() + 32
5 QuartzCore 0x000000018cf40ac4 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 296
6 IOKit 0x000000018b23be70 IODispatchCalloutFromCFMessage + 360
7 CoreFoundation 0x000000018a2ec8dc __CFMachPortPerform + 188
8 CoreFoundation 0x000000018a2fae8c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
9 CoreFoundation 0x000000018a2fadec __CFRunLoopDoSource1 + 440
10 CoreFoundation 0x000000018a2f9010 __CFRunLoopRun + 1616
11 CoreFoundation 0x000000018a239c1c CFRunLoopRunSpecific + 448
12 GraphicsServices 0x000000018fec9c08 GSEventRunModal + 164
13 UIKit 0x000000018d36afd8 UIApplicationMain + 1152
14 0x00000001000f4994 main (main.m:16)
15 libdyld.dylib 0x00000001971e7a9c start + 0
Thread 1:
0 libsystem_kernel.dylib 0x00000001972c9aa8 kevent64 + 8
1 libdispatch.dylib 0x00000001971cd998 _dispatch_mgr_thread + 48
Thread 2:
0 libsystem_kernel.dylib 0x00000001972c9ca0 mach_msg_trap + 8
1 CoreFoundation 0x000000018a2fab70 __CFRunLoopServiceMachPort + 180
2 CoreFoundation 0x000000018a2f8d00 __CFRunLoopRun + 832
3 CoreFoundation 0x000000018a239c1c CFRunLoopRunSpecific + 448
4 AudioToolbox 0x0000000189aedabc GenericRunLoopThread::Entry(void*) + 156
5 AudioToolbox 0x0000000189ade278 CAPThread::Entry(CAPThread*) + 136
6 libsystem_pthread.dylib 0x0000000197363e18 _pthread_body + 164
7 libsystem_pthread.dylib 0x0000000197363d70 _pthread_start + 136
8 libsystem_pthread.dylib 0x0000000197361550 thread_start + 0
Thread 3:
0 libsystem_kernel.dylib 0x00000001972e2e74 __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x0000000197361548 start_wqthread + 0
Thread 4:
0 libsystem_kernel.dylib 0x00000001972e2e74 __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x0000000197361548 start_wqthread + 0
당황했습니다.
현재 프로젝트에서 arm64를 지원하기 위해 프로젝트를 변환하는 데 좋은 WWDC 비디오가 있습니다.이 비디오는 arm64 지원과 관련이있는 것으로 추측됩니다.그 원인을 알기 위해 arm64 지원을 제거해 보았습니까? –