2013-04-11 99 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