0

我正在开发一个 iPhone 应用程序,但我遇到了一些编译器问题。这是低调:

  1. 我正在使用 Xcode 3.2.3 进行编译,目标是 iOS 4.0:我的设备是运行 iOS 4.0 的第二代 iPod touch。
  2. 使用 GCC 4.2 编译:适用于模拟器和设备
  3. 使用 LLVM 编译器 1.5 进行编译:适用于模拟器,但不适用于设备。
  4. 使用 LLVM GCC 4.2 编译:与 LLVM 编译器 1.5 相同的问题。

当它失败时,应用程序甚至永远不会完成加载。这是日志的样子:

run
Running…
[Switching to thread 11523]
[Switching to thread 11523]
sharedlibrary apply-load-rules all
continue
Program received signal:  “EXC_BAD_ACCESS”.
warning: check_safe_call: could not restore current frame

warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.

我不知道这是怎么回事。我真的很想更新我的代码以使用 WWDC 上宣布的最新功能(隐式@synthesize、在类别中添加实例变量的能力等),但 Clang 是必要的。

4

1 回答 1

3

好像有什么东西在内存上拉屎了。更具体地说,在堆栈上。

LLVM 和 GCC 之间的代码生成存在一些相当显着但完全微妙的差异。请记住,LLVM-GCC 实际上是 GCC->LLVM;也就是说,为 LLVM 代码生成引擎提供数据的 GCC 解析器。

因此,我怀疑您遇到了一个可爱的边缘案例。要么是 LLVM 的代码生成中的错误,要么是程序中的错误,表现为这种崩溃。

在我的脑海中,我可以想象如果无法 - 复制一个块然后在不同的线程上执行该块可能会表现为这样的崩溃。

无论如何,如果可以,请提交错误。

于 2010-07-19T04:34:06.560 回答