应用程序在模拟器上运行,但不是 iPhone 6 plus

Posted

技术标签:

【中文标题】应用程序在模拟器上运行,但不是 iPhone 6 plus【英文标题】:App runs on simulator but not iPhone 6 plus 【发布时间】:2015-11-11 14:49:46 【问题描述】:

我正在将在 Linux 上开发的库 (https://github.com/uzh-rpg/rpg_svo) 移植到 ios。目标设备是 iPhone 6 plus。第一步,我们设法将其移植到 Windows。此外,我们成功地让它在 iPhone 的 xcode 模拟器上运行。但是当尝试在 iPhone 上启动它时,应用程序在几个周期后崩溃并出现以下错误:

malloc: * 对象 0x12ce8c3d8 的错误:已释放对象的校验和不正确 - 对象可能在被释放后被修改。 * 在 malloc_error_break 中设置断点进行调试

更糟糕的是,崩溃是不可重复的。有时是早点崩溃,有时是晚点。由于它在模拟器中运行得很好,我们不能使用像“Guard Malloc”这样的内存管理工具。我们尝试了“Leaks”和“Zombies”乐器,但没有成功。

我们知道 iPhone 使用 ARM_NEON 指令集,而在 Mac Book 上我们使用 SSE2。这会是个问题吗? 此外,该库依赖于 Boost 线程。这可能是多线程问题吗?是什么让它在设备上崩溃但在模拟器中没有?我们是否可能遗漏了一个非常基本的观点?

提前致谢!期待回复:)

【问题讨论】:

我使用的是 iOS 9.1 和 Xcode 7.1.. 【参考方案1】:

解决方案:

您必须使用以下标志为 iOS 编译 Boost

-DBOOST_SP_USE_SPINLOCK

您可以在此处使用已设置标志的我的 boost 编译脚本: https://github.com/danoli3/ofxiOSBoost/tree/master/scripts

关于这个 Boost Threads 问题的更多信息在这里: https://***.com/a/14738583/1676524

此博客上的问题的完整分解:http://preshing.com/20121019/this-is-why-they-call-it-a-weakly-ordered-cpu/

【讨论】:

以上是关于应用程序在模拟器上运行,但不是 iPhone 6 plus的主要内容,如果未能解决你的问题,请参考以下文章

indexPath.row 在 iPhone 6 模拟器上的计算不正确,但不是 4s/5/5s/6plus

仅在某些 iPhone 5 和 6 上出现网站错误

OCUnit 是不是允许在 iPhone 模拟器上运行应用程序测试?

iphone应用程序正在模拟器上运行,但不在设备上

图像显示在 iPhone 模拟器中但不是 ipad - Swift

模拟器在 iPhone 6 Plus 的缩放模式下运行?