【问题标题】:Xcode 4 internal compiler error: bus errorXcode 4 内部编译器错误:总线错误
【发布时间】:2011-07-26 12:06:48
【问题描述】:

Xcode 4.0.1 开始出现内部编译器错误。它只是说“总线错误”。它出现在我的一个 .m 文件的底部,该文件现在将近 4000 行。

我看过this question,但我没有犯这个错误,当它出现时,我通常可以通过在某处添加一些随机代码行来修复它。当它第一次出现时,我追踪到我在一堆新代码中设置视图框架的位置:

view.frame = CGRectMake(otherView.frame.origin.x, 0, otherView2.frame.size.width, 40);

如果我用硬编码值替换了 otherView 和 otherView2 引用,问题就消失了。或者,如果我只是将int x = 0; 放在违规行上方,它就会消失。

我也看过this question,但没有明确的答案。它似乎不是任何单独的代码行;它只是看似随机出现。而且 Google 没有我能找到的任何明确的解决方案。

我已尝试使用该项目的所有可能编译器(GCC 4.2、LLVM GCC 4.2 和 LLVM Compiler 2.0,它们都有问题。我将静态分析器设置为运行每个构建,并将其关闭没有帮助。This question 似乎表明这是编译器中的一个错误。我只是卡住了吗?有解决方法吗?

编辑:另一个例子:它又发生了,我追踪到:

[headerView centerViewVertically:milesLabel pixelsFromRight:pointLabel.frame.size.width + 20];

我改成:

int x = pointLabel.frame.size.width;
[headerView centerViewVertically:milesLabel pixelsFromRight:x + 20];

它又起作用了。

【问题讨论】:

    标签: compiler-errors xcode4


    【解决方案1】:

    您是否释放了像 otherView 这样的任何对象,我很确定这会在 xcode 中产生总线错误。

    【讨论】:

    • 发布时一样吗?不,我不这么认为,那应该是运行时错误,而不是编译错误。
    【解决方案2】:

    在我看来真的像一个编译器错误。

    我遇到了同样的问题(Xcode 4.0.2;LLVM GCC 4.2)。在视图控制器的 viewDidLoad 我有一行:

    self.title = @"Enter your details";
    

    我不再需要此行,因此我将其删除,随后的构建因“内部编译器错误:总线错误”而失败。如果我没有删除该行,而是将其更改为:

    self.title = nil;
    

    构建编译良好。

    包含的详细构建日志:

    MyViewController.m:316: internal compiler error: Bus error
    Please submit a full bug report,
    with preprocessed source if appropriate.
    See <URL:http://developer.apple.com/bugreporter> for instructions.
    {standard input}:0:End-of-File not at end of a line
    {standard input}:1704:End-of-File not at end of a line
    {standard input}:unknown:Partial line at end of file ignored
    {standard input}:1695:non-relocatable subtraction expression, "L_OBJC_CLASSLIST_REFERENCES_$_6" minus "LPC11_18"
    {standard input}:1695:symbol: "L_OBJC_CLASSLIST_REFERENCES_$_6" can't be undefined in a subtraction expression
    {standard input}:1692:non-relocatable subtraction expression, "L_OBJC_SELECTOR_REFERENCES_36" minus "LPC11_17"
    {standard input}:1692:symbol: "L_OBJC_SELECTOR_REFERENCES_36" can't be undefined in a subtraction expression
    [... any many more lines like this ...]
    

    【讨论】:

      【解决方案3】:

      我遇到了这个错误,结果证明是我的错误,基本上是由 type-o 引起的,或者更准确地说是 paste-o。

      我正在创建两个标签并将它们添加到子视图中。代码基本上是这样的。

      UILabel *pointsLabel = [[UILabel alloc] initWithFrame:ptsFrame];
      ...
      [self addSubview:pointsLabel];
      [pointsLabel release];
      
      UILabel *typeLabel = [[UILabel alloc] initWithFrame:typeFrame];
      ...
      [self addSubview:pointsLabel];
      [typeLabel release];
      

      注意在第二个addSubview 中我再次添加了pointsLabel,即使我已经发布了它(实际上是要添加typeLabel)。我希望这也会导致运行时错误,但无论出于何种原因,它都会导致上述总线错误。寻找的东西。

      【讨论】:

        【解决方案4】:

        我刚刚发生了这种情况(不是第一次)。我还没有弄清楚到底是什么导致了这个问题,但它会为模拟器编译,而不是为设备编译。将我的 [[array alloc] init] 移出我的 init 方法并进入单独的 setup 方法可以解决问题。

        也许我在太短的时间内分配了太多的内存或什么?然而,这似乎不太可能,因为在我尝试添加的那个之前和之后完成了几个 [[array alloc] init] 数组设置。一切都与其他数组的完成方式完全相同,所以为什么它是这次的问题是我还不明白。

        【讨论】:

        • 哇!!!。做到了。这很神秘。我的数组大小为 2,并且是 init 块中的唯一声明。非常感谢您发布您的解决方案!
        • 很高兴我帮助了某人。我仍然不知道为什么会发生这种情况或为什么这是解决方法。
        【解决方案5】:

        我在输入下一行代码时遇到了同样的错误:

        tempButton.titleLabel.adjustsFontSizeToFitWidth = YES;
        

        将同一行代码加倍却没有报错:

        tempButton.titleLabel.adjustsFontSizeToFitWidth = YES;
        tempButton.titleLabel.adjustsFontSizeToFitWidth = YES;
        

        【讨论】:

          【解决方案6】:

          我在一个项目中遇到了这个问题,但只是在为设备编译时。当我为模拟器构建时,它运行良好。

          我可以通过在项目的构建设置中将我的编译器从“LLVM GCC 4.2”更改为“LLVM Compiler 2.0”来解决这个问题。

          我不得不认为这是一个编译器错误。语法有效但语义错误的代码不应导致编译器出错。编译器不执行代码,它只是编译它。因此,如果你有逻辑或内存管理错误,编译器并不关心这些事情。

          【讨论】:

            【解决方案7】:

            我也遇到了这个错误,只有在设备上编译时,在 xcode 对我的代码进行了现代化改造之后。我在项目和目标构建设置中将编译器切换到 Apple LLVM 2.1 并再次运行。这捡起了一些流浪;在项目中,错误总线错误消失了。

            【讨论】:

              【解决方案8】:

              您是否使用过任何已弃用的功能?

              我删除了对已弃用函数的所有调用并且可以正常工作!

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-08-26
                • 1970-01-01
                • 2021-04-06
                • 2010-11-08
                • 1970-01-01
                相关资源
                最近更新 更多