【问题标题】:C++: debug bus errorC++:调试总线错误
【发布时间】:2016-10-14 14:13:24
【问题描述】:

我正在尝试在 Linux 中编译一个 c++ 程序,使用 shell 中的命令

$ g++ -Wall *.cpp -o prog

由于某种原因,它不断给我一个奇怪的错误:

g++: Internal error: Bus error (program cc1plus) 请提交完整的 错误报告。查看 说明。

我在网上搜索了这个总线错误,它说它与访问非法内存有关。

有人可以为我澄清一下吗?

【问题讨论】:

  • 这种情况只发生在这些特定的 *.cpp 文件上,还是在您尝试编译某些东西时发生?如果是后者,则可能是您的 Linux 安装出错,否则您会发现 g++ 错误。
  • 另外,您使用的是什么 g++ 版本(请参阅g++ -v)?其他版本也会发生这种情况吗?

标签: c++ compiler-construction


【解决方案1】:

此错误消息告诉您 g++ 编译器本身存在错误。

尝试通过删除源文件的零碎部分来缩小范围,直到问题消失。你不是要修复你的程序,你只是想找到破坏编译器的部分。找到它后,您可以提供更好的错误描述,也可以更改代码以解决它。

或者只是下载最新版本的 g++ 编译器,希望它已经修复。

【讨论】:

  • 如果反复尝试重新编译(没有对源代码进行任何更改)最终导致编译器成功怎么办?
  • @KyleStrand,这当然是可能的,这强烈表明编译器存在未初始化的变量错误。我的建议保持不变,但更难判断您自己的代码修改何时会产生影响。
  • 嗯。这很奇怪,因为我使用的是 5.1,它是 pretty 最近的......而且它也始终如一地在多台其他机器上正确构建。我有点怀疑我无意中对机器本身的文件系统做了一些奇怪的事情,或者其他什么。
  • @KyleStrand 也许电脑的内存有问题?
  • Memtest 没有发现错误。幸运的是,我们显然有一些备用系统还没有时间设置,所以我可以无限期地搁置这个问题。
【解决方案2】:

您的问题不在您的代码中,是编译器 (g++) 崩溃并产生该总线错误,您可能拥有此类编译器的过时版本并且需要更新,或者您很幸运并找到了一个真正的g++ 中的错误。

我会尝试分别编译每个源文件,以检查源代码的哪一部分触发了错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多