2013-04-11 65 views
3

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

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

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

  1. 试着找出我的代码的哪个方面导致编译器崩溃并相应地重写我的代码。
  2. 租另一台服务器。
  3. 升级(或降级)克++或在服务器上创建一个额外的g ++以及尝试。我不愿意这样做,因为我读过在Ubuntu上升级g ++时可能会毁掉您的系统。
  4. 我使用Eclipse我开发的机器上建立的一切,只是建立使用Eclipse生成的,我所做的Git项目的一部分生成文件在我的服务器上的代码 - 我可以写我自己的Makefile万一东西在里面导致崩溃在64位服务器上。

我会如何进行真正欢迎咨询。我不是编译器如何在内部工作的专家,这是我第一次遇到这种错误,因此我不确定接下来要做什么。

+0

是否错误指示代码坠毁就行了?你能粘贴这些代码吗?像这样的问题通常的解决方法是对代码进行微小的更改,直到编译完成。 (例如,将复杂的语句分解为两个简单的语句。) – 2013-04-11 07:15:40

+0

@DavidSchwartz不幸的是,它不报告该行。我希望能够在这里找到一些有关编译器崩溃报告的信息,以便找到导致问题的线路。谢谢你的建议 - 它给了我一个开始的地方。我可以回滚到我的最后一个编译版本,并从那里开始 – mathematician1975 2013-04-11 07:18:12

+0

请尝试在此处平分并报告结果。很有意思。 – 2013-04-11 07:19:49

回答

1

我会如何进行

一个原因崩溃可能是硬件问题(故障的磁盘,磁盘控制器,存储器,或别的什么)真的欢迎咨询。这很难被发现。

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

你可以做的是:

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

有各种文章因为硬件问题,g ++可能会崩溃:

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

如果其他程序运行平稳,编译器错误似乎比某个硬件问题更有可能......也就是说,应该有一个用于测试内存的实用程序(如果不是,Redis会捆绑一个)。 – 2013-04-11 07:33:58

+0

@MatthieuM。之前我有过硬件问题,导致g ++编译经常中断。就我而言,这是一个错误的磁盘控制器 - 很难找到问题。 – 2013-04-11 07:36:14

+0

谢谢你的回答。我租用了我的服务器空间,因此我无法控制硬件,但至少由于资源不足可能会造成问题。我会深入挖掘。 – mathematician1975 2013-04-11 08:25:09