【发布时间】:2014-11-15 14:28:28
【问题描述】:
自从我将 Xcode 更新到 6.0.1 并将 iOS SDK 更新到 8.0 后,我的应用程序不再在设备上运行(运行 iOS 8 ofc)。 但它在模拟器中完美运行。
在对委托的任何调用发生之前,应用程序在 UIApplicationMain 中崩溃。 CFTypeCollectionRetain 处的值或键似乎为空。
我试过了
- 重新创建证书/配置文件。
- 使用/不使用 ARC 重新构建。
- 测试了 armv7 和 arm64 版本。
- Xcode 模板(游戏)应用程序编译和运行没有问题。
注意事项
- 几乎所有代码都是 C++,它是一个游戏引擎,只使用最少的操作系统服务。
- 一些全局构造函数(在 main 之前执行)正在使用 pthread 原语。
- 没有创建根视图控制器(遗留原因),而是创建了一个自定义视图,它使用 CAEAGLLayer 来“启用”GLES...但是由于程序没有达到创建这些的点我已经忽略了它暂时。
- 在 UIApplicationMain 内部有一个调用 [_UIFlippingView layerClass] 会崩溃;但在 Google 上找不到任何有关 UIFlippingView 类的信息...
我不期待答案,但非常感谢任何关于下一步看哪里的好建议!
调用栈如下:
* 线程 #1: tid = 0x185d9, 0x23f7646c CoreFoundation`__CFTypeCollectionRetain + 104, queue = 'com.apple.main-thread', 停止原因 = EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xdefe) * 帧 #0: 0x23f7646c CoreFoundation`__CFTypeCollectionRetain + 104 帧#1:0x23fd9168 CoreFoundation`__CFBasicHashAddValue + 564 帧#2:0x23ec06c0 CoreFoundation`CFBasicHashAddValue + 19048 帧#3:0x23ef745e CoreFoundation`CFDictionaryCreate + 178 帧 #4:0x28a8d246 BackBoardServices`BKSHIDEventCreateClientAttributes + 186 帧#5:0x28a8d2ac BackBoardServices`___getHIDEventSystemClient_block_invoke + 36 帧#6:0x01fab740 libdispatch.dylib`dispatch_once_f + 100 帧 #7:0x28a8d318 BackBoardServices`BKSHIDEventRegisterEventCallback + 84 第 8 帧:0x274ab4a8 UIKit`UIApplicationMain + 576 帧 #9: 0x0008833c Traktor.Amalgam.App`main(argc=1, argv=0x01d3f9e8) + 196 at Main.mm:15 CoreFoundation`__CFTypeCollectionRetain: 0x23f76404: 推 {r4, r5, r7, lr} 0x23f76406: 移动 r4, r1 0x23f76408: 添加 r7, sp, #0x8 0x23f7640a:cbz r4,0x23f7646c; __CFTypeCollectionRetain + 104 0x23f7640c: ldrd r0, r1, [r4] 0x23f76410:cmp r0,#0x0 0x23f76412: ubfx r1, r1, #0x8, #0xa 0x23f76416: beq 0x23f7644a ; __CFTypeCollectionRetain + 70 0x23f76418: movw r2, #0xdf70 0x23f7641c:移动 r2,#0xe02 0x23f76420: 添加 r2, 电脑 0x23f76422:ldr r2,[r2] 0x23f76424:cmp r0,r2 0x23f76426: beq 0x23f7644a ; __CFTypeCollectionRetain + 70 0x23f76428: movw r2, #0x4aa4 0x23f7642c: 移动 r2, #0xe03 0x23f76430: 添加 r2, 电脑 0x23f76432: ldr.w r5, [r2, r1, lsl #2] 0x23f76436:cmp r0,r5 0x23f76438: beq 0x23f7644a ; __CFTypeCollectionRetain + 70 0x23f7643a: tst.w r0, #0x1 0x23f7643e: beq 0x23f76456 ; __CFTypeCollectionRetain + 82 0x23f76440: 移动 r0, r4 0x23f76442:blx 0x2400d1e0;符号存根:+[NSMutableOrderedSet orderedSetWithCapacity:] 0x23f76446:cmp r0,r5 0x23f76448: bne 0x23f76456 ; __CFTypeCollectionRetain + 82 0x23f7644a: 移动 r0, r4 0x23f7644c:移动 r1,#0x0 0x23f7644e: pop.w {r4, r5, r7, lr} 0x23f76452: b.w 0x23eafc38 ; _CFRetain 0x23f76456: movw r0, #0xb93e 0x23f7645a: 移动 r0, #0xe02 0x23f7645e: 添加 r0, pc 0x23f76460:ldr r1,[r0] 0x23f76462: 移动 r0, r4 0x23f76464:pop.w {r4,r5,r7,lr} 0x23f76468: b.w 0x2400c0c8 ; objc_msgSend$shim 0x23f7646c:陷阱——被困在这里 0x23f7646e:无在 UIApplicationMain 代码中,有趣的是对 [_UIFlippingView layerClass] 的调用会崩溃...
0x274ab486:blx 0x27b5b248;符号存根:roundf$shim 0x274ab48a: 移动 r5, #0x0 0x274ab48c: movw r0, #0x60f1 0x274ab490: 移动 r0, #0x0 0x274ab494: 添加 r0, pc 0x274ab496:blx 0x27b595d8;符号存根:-[UIGravityBehavior _commonInit] 0x274ab49a: movw r0, #0xfa8f 0x274ab49e: 移动 r0, #0xfff9 0x274ab4a2: 添加 r0, pc 0x274ab4a4:blx 0x27b59068——这个电话;符号存根:+[_UIFlippingView layerClass] 0x274ab4a8: 移动 r0, r5 0x274ab4aa: 移动 r1, r11 0x274ab4ac:blx 0x27b5b248;符号存根:roundf$shim 0x274ab4b0: movw r1, #0x23e4 0x274ab4b4: 移动 r1, #0xb12 0x274ab4b8: 添加 r1, pc 0x274ab4ba: ldr r1, [r1] 0x274ab4bc:blx 0x27b5b248;符号存根:roundf$shim【问题讨论】:
标签: ios crash ios8 xcode6 callstack