【发布时间】:2013-04-11 07:13:17
【问题描述】:
我一直在开发一个在 64 位 Ubuntu 12.04 上运行的 C++ 应用程序。我在我的 32 位 12.04 Ubuntu 笔记本电脑上开发代码,然后将其上传到 git 存储库,将其拉到服务器上并本地构建拉取的源代码。
直到最近一切都很好,我没有遇到任何问题,但今天当我尝试在 64 位服务器上编译时 g++ 4.6.3 崩溃了,我得到一个输出告诉我提交崩溃报告(g++ 4.6.3 也是一样我的开发机器上也有版本)。相同的代码不会导致我的开发机器崩溃。
我不是在问它为什么崩溃,但如果可能的话,我想知道是什么问题。 g++ 遇到问题时会产生任何文件日志吗? 据我所知,我的代码没有做任何有争议的事情,我没有创建模板,我只是使用了几个 boost 库、mysql++、openssl 和一些我自己编写的静态库。 我真的需要每天运行这个应用程序,所以我想尽快解决这个问题。我可以想到以下几种方式来处理事情
- 尝试找出我的代码的哪些方面导致编译器崩溃并相应地重写我的代码。
- 租用另一台服务器。
- 升级(或降级)g++ 或在服务器上创建一个额外的g++ 并尝试。我不愿意这样做,因为我了解到在 Ubuntu 上升级 g++ 时可能会破坏系统。
- 我使用 Eclipse 在我的开发机器上构建所有内容,并使用 Eclipse 生成的 makefile 在我的服务器上简单地构建代码,我已将其作为 git 项目的一部分 - 我可以编写自己的 makefile,以防其中的某些东西导致崩溃在 64 位服务器上。
我非常欢迎关于如何进行的建议。我不是编译器内部工作原理的专家,这是我第一次遇到这种错误,所以我不太确定下一步该怎么做。
【问题讨论】:
-
该错误是否表明它崩溃的代码行?你能粘贴那个代码吗?对于此类问题,通常的解决方法是在代码编译之前对代码进行一些细微的更改。 (例如,将一个复杂的语句分成两个简单的语句。)
-
@DavidSchwartz 不幸的是它没有报告这条线。我希望在这里找到一些关于编译器崩溃报告的信息,以便我可以找到导致问题的行。不过感谢您的建议-它给了我一个开始的地方。我可以回滚到我的上一个可编译版本并从那里开始
-
请在此处尝试平分并报告调查结果。很有趣。
标签: c++ crash g++ ubuntu-12.04