ios – 使用ad-hoc分发在设备上崩溃

前端之家收集整理的这篇文章主要介绍了ios – 使用ad-hoc分发在设备上崩溃前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
突然间,我通过Testflight和iTunes-sync的临时发行版不再有效.使用ad-hoc构建配置分发的应用程序永远不会在设备上完全启动.它会立即崩溃并出现分段错误11.

这个问题的奇怪之处在于,在下面提到的所有设备上,调试版本可以完美地工作.这让我相信我的project.pbxproj中有一些东西搞砸了.但是当我查看git-log时,我看到没有任何乱序,唯一改变的是架构(ARCHS)和有效架构(VALID_ARCHS) .

我是否正确地假设弄乱架构不应该在启动时但在构建过程中导致实际错误

一些背景:
另外值得一提的是,我安装了Xcode 4.4.1和4.5 GM,当我将GM升级到App Store时,它也删除了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.跳过Testflight并使用老派的方式在iTunes上发布ad-hoc.失败
2.重新安装配置文件FAIL
2.在我的机器上创建一个新用户并重新安装Xcode.失败
3.从另一台机器构建.失败
4.将优化级别设置为:-O0 FAIL

虽然我确信没有任何代码被更改,但我没有看到其他合理的解释.所以我开始用git恢复项目,盯着我成功发布临时版本的那一天.令我恐惧的是,我注意到同样的分段错误在我的时间结构之后!
考虑到这一事实,只剩下一个动作;一个非常强大的调试方式我称之为喷雾和祈祷. =)换句话说,我开始评论代码的各个部分,看看是否有任何不同,我完全惊讶它实际上做了.几个小时的禁用和启用我的应用程序的部分后,我找到了罪魁祸首:从未保留过静态NSArray.我真正想到的是,自2010年以来,阵列的实际初始化看起来一直如此.那么为什么现在这突然导致内存错误呢?为什么静态分析仪没有警告我们呢?

我现在太精疲力竭地回答这些问题,我会尝试用更多细节更新问题,希望明天也能回答.
再一次,非常感谢迄今为止帮助过的人! < 3

解决方法

看起来问题的原因是并发问题:
Crashed Thread:  1

在这种情况下,可能很难找到并解决问题的根源(http://en.wikipedia.org/wiki/Unusual_software_bug#Heisenbug).

可能是你正在用多个线程中的一个对象做某事而没有适当的同步;或者你可能是一个线程中的dealloc’ed对象(例如线程0)并试图从另一个线程(线程1)访问它.

猜你在找的iOS相关文章