在64位服务器上构建代码时,g ++ 4.6.3崩溃

时间:2013-04-11 07:13:18

标签: c++ crash g++ ubuntu-12.04

我一直在开发一个在64位Ubuntu 12.04上运行的C ++应用程序。我在我的32位12.04 Ubuntu笔记本电脑上开发代码,然后将其上传到git存储库,将其拉到服务器上并本地构建拉取的源代码。

直到最近,事情运作良好,我没有遇到任何问题,但是当我尝试在64位服务器上编译时,g ++ 4.6.3崩溃了,我得到一个输出告诉我提交崩溃报告(g ++ 4.6.3是一样的)我的开发机器上也有版本)。相同的代码不会导致我的开发机器崩溃。

我不是在问为什么会崩溃,但我想知道问题是什么,如果可能的话。当g ++遇到问题时会产生任何文件日志吗? 据我所知,我的代码没有任何争议,我不是在创建模板,我只是使用了几个boost库,mysql ++,openssl和我自己编写的一些静态库。 我真的需要每天运行这个应用程序,所以我想尽快解决这个问题。我可以想到以下处理事情的方法

  1. 尝试找出我的代码的哪个方面导致编译器崩溃并相应地重写我的代码。
  2. 租用另一台服务器。
  3. 升级(或降级)g ++或在服务器上创建额外的g ++并尝试。我不愿意这样做,因为我读过你在Ubuntu上升级g ++时会破坏你的系统。
  4. 我使用Eclipse在我的开发机器上构建所有内容,并使用Eclipse生成的makefile在我的服务器上构建代码,我已经将其作为git项目的一部分 - 我可以编写自己的makefile,以防有什么东西导致崩溃在64位服务器上。
  5. 我真的很欢迎有关如何继续的建议。我不是编译器如何在内部工作的专家,这是我第一次遇到这种错误,所以我不确定下一步该做什么。

1 个答案:

答案 0 :(得分:1)

  

我真的很欢迎有关如何继续的建议

崩溃的一个原因可能是硬件问题(磁盘故障,磁盘控制器,内存或其他问题)。这很难被发现。

另一个原因可能是编译器错误,但不太可能。

你能做的是:

  • 检查服务器的硬件(运行您可以想到的所有可能的检查)。尝试在不同的机器上多次编译
  • 确保您的系统没有耗尽虚拟内存
  • 升级或更改编译器,看看是否发生

有各种文章解释说,由于硬件问题,g ++会崩溃:

  • crash during compiling - 很可能您的安装,编译器或内核没有任何问题。它很可能与您的硬件有关。这个“规则”有两个例外。您可能在虚拟内存上运行不足,或者您可能正在安装Red Hat 5.x,6.x或7.x
  • crash during optimization