【问题标题】:Xcode LLVM 3.1 and GCC_OPTIMIZATION_LEVELXcode LLVM 3.1 和 GCC_OPTIMIZATION_LEVEL
【发布时间】:2012-05-02 14:36:30
【问题描述】:

我有一个 Xcode 4.3.2 iOS 5.1 项目,当我的构建配置使用无 [-O0] 的 GCC_OPTIMIZATION_LEVEL 时编译和运行良好,但在使用任何其他优化级别时失败并出现 EXC_BAD_ACCESS 错误。我的项目将 GCC_VERSION 设置为 Apple LLVM 3.1(默认)。这是否表明我的代码有问题?

【问题讨论】:

  • 可以同时使用优化调试符号进行编译,这样您就可以调试程序并了解问题所在。
  • 问题出在一段简单的代码中,用于访问在代码中较早分配值的(非原子,强)属性。好像 ARC 没有保留该属性——但仅在启用优化时才保留。

标签: ios xcode llvm


【解决方案1】:

通常它表示您的代码有问题。喜欢:

  • 访问已释放的内存
  • 读取或写入内存超出分配的数组范围
  • 使用未初始化的变量或类成员
  • 还有许多其他...

在极少数情况下,这种崩溃实际上是编译器错误。但这很少见。这通常是您的代码有问题。

尝试查明发生崩溃的代码,并尝试查看在该代码附近如何使用变量。检查那里的一切是否正确使用/分配/初始化/释放。

【讨论】:

  • 是的,我的代码有问题。我将一个块存储在字典中以供以后使用(在销毁它创建的范围之后),而无需先复制它。回想起来,我很惊讶即使没有优化它也能正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多