iOS App Archive 版本出错的问题 调试和解决方法

来源:互联网 发布:淘宝视频制作 编辑:程序博客网 时间:2024/05/21 14:41

现象:

debug联机调试时无问题
archive出来安装到iPhone运行报错


联机在organizer中看错误日志:

Triggered by Thread:  0

Thread 0 Crashed:
0   SanguoOnline                       0x001a763e rijndael_decrypt + 14
1   SanguoOnline                       0x001a81f2 decryption + 34
2   SanguoOnline                       0x0010a024 cocos2dx_lua_loader + 376

rijndael_decrypt 此方法是用来解密下载的lua文件


为了更好的定位错误根源 Mac连上iPhone后 edit scheme 在Run ***(工程名)更新Build Configuration选择Release 这样保证联机运行的版本与发布版本一致,再运行程序开始调试。

果然在rijndael_decrypt  报错


跟踪代码调试,发现明明一个变量有值但将它赋值给另外一个变量时出错 错误信息: Exception Subtype: EXC_ARM_DA_ALIGN at 0x02dff001

怀疑是编译器问题 尝试修改编译器优化数值:
工程-> Target -> Apple LLVM 5.1 - Code Generation -> Optimization Level -> Release 设置为 None [-O0] (与debug保存一致) 再联机运行调试,问题没有再出现 



现在需要单独设置此文件 为不优化,首先把 Optimization Level -> Release 值 改回去
再在 Build Phases 中搜索 rijn 找到对应的文件 点击 Complier Flag 设置为 -O0

再联机进行调试,问题没有出现
再Archive出来 再调试 问题没有出现,至此问题结束


问题关键:
1. 如果Archive 版本有Debug版本不存在的问题,首先修改Scheme将运行方式改完Release以保证联机调试版本一致
2. 如果确实存在通过修改代码逻辑无法修复的问题 需要考虑是否为编译器的bug 调整编译优化值




0 0