gpt4 book ai didi

iphone - 使用 LLVM 构建和任何优化都会导致应用程序在启动时崩溃

转载 作者:行者123 更新时间:2023-12-03 18:30:38 24 4
gpt4 key购买 nike

当我尝试在 XCode 4.0.1 中使用 LLVM 2.0 以及任何非无级别或优化(除了 -O0 之外的任何级别)构建应用程序时,应用程序在我在设备上启动后崩溃(模拟器正常)。我似乎无法调试崩溃,因为当我在 xcode 中构建并通过 GDB/LLDB 附加时,它不会发生。另外,只有当我使用 xcodebuild 在命令行上构建应用程序时才会发生崩溃;即使使用完全相同的项目设置,通过 XCode IDE 构建也不会崩溃。我在崩溃日志中看不到任何有用的信息,因为崩溃发生在我的代码之外:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00b53400
Crashed Thread: 0

Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 ??? 0x00b53400 0 + 11875328

它无法正确表示,因为它不知道崩溃发生在哪个库中。

设备控制台显示我们的应用程序在启动时发出的一些 NSLog 语句,然后加载并绘制第一个屏幕的 UI,然后发生崩溃。不进行任何优化的构建,或者使用任何优化级别的 GCC 4.2 进行构建都可以正常工作。

这里可能发生了什么,我该如何调试它?与 xcodebuild 命令行界面相比,XCode IDE 在构建和部署应用程序时会做哪些不同的事情?

最佳答案

我们的应用程序也遇到了同样的问题。它仅影响发布/分发版本中的 armv6 代码,因此仅影响 iPhone 3G 和 iPod Touch 2G。但与您的描述相反,它可以用 XCode 重现(我们不使用 xcodebuild)。

显然生成的代码破坏了堆栈指针。因此,您无法真正对其进行调试,并且崩溃日志毫无值(value)。使用调试器,它可以停在应显示的第一个 View 的 viewWillAppear:animated 处。但不久之后,应用程序总是崩溃。

切换到较旧的编译器解决了该问题。

我已向 Apple 提交了一个错误。请也提交一份,因为据说可以提高错误的优先级。

还有更多人报告同样的问题:

关于iphone - 使用 LLVM 构建和任何优化都会导致应用程序在启动时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5490432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com