iOS应用程序与静态库老是死机特设存档构建的启动。 不能重现Xcode调试(iOS App wi

2019-06-23 21:54发布

我们有一个应用程序内置了静态库,我们也建立了分布。 该应用和IIb中Xcode调试运行正常或当由Xcode中调试会话的设备上加载。 此应用始终只要我们把一个特设存档建立在设备上的崩溃。 控制台日志语句表明它是在库的代码崩溃,但崩溃报告不symbolicating库代码。

  • 可以在Xcode模拟器不会再现。
  • 卫队的malloc,警卫边什么都不显示(但这些模拟器只运行)。
  • 无泄漏
  • 使用的Xcode 4.3.2
  • 应用目标4.3或更高版本。
  • 库目标3.0或更高版本。
  • 其它链接器标记= -ObjC
  • 库设置为“可选”的目标“链接二进制与图书馆”
  • 拇指支撑关闭(使用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)

我们看到评论的其他地方,与递归静态库有问题。 但是,我们没有在我们的库任何递归。

难住了,需要更多的想法。

Answer 1:

弄清楚了!! 后在桌子上撞头4天。 我们不知道为什么它的工作原理,但它确实。 在情况下,它是帮助他人这里是解决它为我们设置。 静态库项目的生成设置中的“部署”一节中设置这些:

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

我们发现这个通过试验和错误,但现在发现,一些网上讨论重新设立建设iOS的静态库使用此设置的Xcode项目。 没有讨论,至于为什么,但它是。

如果任何人有,为什么这些LIB设置,解决它的任何想法,你可能想在这里发表评论。



Answer 2:

我有一个类似的问题,并试图改变项目构建设置,但它并没有为我工作。 最终,通过改变编译器优化级别设置为发布解决我的问题:

在生成设置,转到LLVM编译器4.2 - 代码生成部分,查找的优化级别选项,并更改设置释放从最快,最小[-Os]为None [-O0]。

希望这可以帮助!



Answer 3:

机会是非常高的,你的构建设置的AdHoc(释放)和调试之间的不同。 你仔细检查所有建立的设置值? 尤其是看ARC(自动引用计数)设置。



Answer 4:

调试,通过与Xcode调试加载,你的生产版本(可能设置为Release具有非常不同的优化和代码生成设置比调试版本,你正在使用测试版本)。



文章来源: iOS App with Static Lib ALWAYS crashes on Launch of Ad Hoc Archive Build. Cant reproduce in Xcode Debugger