突然间,我通过Testflight和iTunes同步的特别发行版不再工作了。使用特别构建配置分发的应用程序从未在设备上完全启动。它立即崩溃,并出现分段故障11。
这个问题的奇怪之处在于,在下面提到的所有设备上,调试构建都能完美地工作。这让我相信我的项目.pbxproj中有一些问题。但当我查看git日志时,我没有发现任何问题,其中唯一更改的是架构(ARCHS)和有效架构(VALID_ARCHS
。
我认为混乱的体系结构不应该在启动时而是在构建过程中导致实际错误,这是正确的吗?
一些背景:
另外值得一提的是,我安装了Xcode 4.4.1和4.5 GM,当我将GM升级到App Store中的GM时,它也删除了我的Xcode 4.4.1备份。在那次打嗝之后,我删除了所有版本的Xcode,重新启动并安装了4.4.1版本(这样我就可以为armv6构建了)。
任何关于如何进行此调试的有用提示对我来说都非常有价值。
感谢您抽出时间。<3
控制台从设备打印和崩溃日志:
-https://gist.github.com/3781018
如果需要,我可以添加更多日志。
当前环境:
-Xcode 4.4.1版(4F1003)
-Mac OS 10.8.2版
项目设置(pbxproj):
-https://gist.github.com/3780985
测试的设备:
-iPhone 3GS iOS 6
-iPhone 3G iOS 4.2.1
-iPad第二代iOS 5.1.1
-iPhone 4S iOS 5.1.1
-iPhone 4 iOS 6.0
-iPhone 4S iOS 6.0
更新
要继续调试,我尝试了以下操作:
1。跳过测试飞行,使用老派的方式发布一个特别的iTunes失败2.重新安装配置文件失败
2。在我的机器上创建一个新用户并重新安装Xcode失败
3。从另一台计算机生成失败
4。将优化级别设置为:-O0失败
尽管我确信代码没有被更改,但我看不到其他合理的解释。所以我开始用git恢复这个项目,从我成功发布临时版本的那一天开始。令我恐惧的是,我注意到同样的分割错误在时间的织物中跟随着我
考虑到这一事实,只剩下一项行动了;一种非常强大的调试方法,我称之为spray和pray换句话说,我开始对代码的部分进行注释,看看这是否有什么不同,令我完全惊讶的是,它确实有。在禁用和启用部分应用程序几个小时后,我发现了罪魁祸首:静态NSArray从未被保留。真正让我震惊的是,自2010年以来,阵列的实际初始化看起来一直是一样的。那么,这到底是为什么现在突然导致记忆错误呢?为什么静态分析器没有警告我们这一点?
我现在太累了,无法回答这些问题,我会尝试用更多的细节更新这个问题,希望明天也能得到答案
再一次,非常感谢迄今为止提供帮助的所有人<3
看起来问题的原因是并发问题:
Crashed Thread: 1
在这种情况下,可能很难找到并解决问题的根源(http://en.wikipedia.org/wiki/Unusual_software_bug#Heisenbug)。
可能是您正在使用多个线程中的一个对象执行某些操作,而没有进行适当的同步;或者可能是您在一个线程(例如线程0)中解除锁定对象,并试图从另一个线程访问它(线程1)。