带有静态库的iOS应用程序在Ad Hoc Archive Build的启动时总是崩溃。无法在Xcode Debugger中重现

时间:2012-04-24 15:11:48

标签: ios xcode static-libraries

我们有一个使用静态Lib构建的应用程序,我们也正在构建用于分发。 App和Lib在Xcode调试器中运行正常,或者在Xcode调试会话中加载到设备上。一旦我们在设备上放置Ad Hoc Archive构建,App就会崩溃。控制台日志语句表明它在Lib代码中崩溃,但崩溃报告没有象征Lib代码。

  • 无法在Xcode Simulator中重现。
  • Guard malloc,Guard Edges什么都没显示(但这些只在模拟器中运行)。
  • 无泄漏
  • 使用Xcode 4.3.2
  • 应用目标4.3或更高版本。
  • Lib目标3.0或更高版本。
  • 其他链接器标志= -ObjC
  • Lib在目标“链接二进制文件库”中设置为“可选”
  • Thumb支持关闭(使用LLVM)

在控制台上看到2个可能有用的例外,但到目前为止还没有在网上做任何事情,这对此有很大帮助:

Application 'x' exited abnormally with signal 12: Bad system call: 12 (mostly)
Application 'x' exited abnormally with signal 12: Bad system call: 11 (rarely)

我们在其他地方看到了带有Recursion的静态库存在问题。但是我们的Lib没有任何递归。

难倒,需要更多的想法。

4 个答案:

答案 0 :(得分:14)

在桌子上撞了4天后想出来了。。我们不确切地知道它为什么会起作用,但确实如此。如果它对其他人有帮助,这里是为我们解决它的设置。在静态库项目的构建设置的“部署”部分中设置这些:

SET "STRIP LINKED PRODUCT" (STRIP_INSTALLED_PRODUCT) = NO
SET "STRIP STYLE" = DEBUGGING SYMBOLS.

我们通过反复试验发现了这一点,但现在注意到在线重新设置用于构建iOS静态库的Xcode项目的一些讨论使用此设置。没有讨论为什么,但确实如此。

如果有人对这些lib设置为什么修复它有任何想法,你可能想在这里评论它。

答案 1 :(得分:1)

我有类似的问题并尝试更改项目构建设置,但它对我不起作用。最终通过更改发行版的编译器优化级别设置解决了我的问题:

在Build Settings中,转到LLVM编译器4.2 - 代码生成部分,查找优化级别选项并将Release设置从Fastest,Smallest [-Os]更改为None [-O0]。

希望这有帮助!

答案 2 :(得分:0)

AdHoc(发布)和调试之间的构建设置不同的可能性非常高。 您是否仔细检查了所有构建设置值? 特别要注意ARC(自动参考计数)设置。

答案 3 :(得分:0)

通过加载Xcode调试器调试生成版本(可能设置为Release Build,其优化和代码生成设置与您当前正在测试的Debug版本不同)。