2012-12-19 87 views
1

在Fortran中編寫的項目運行在不同的機器上,但是當轉移到其他一些Linux機器時,它不會。它在其中一個表示segmentation fault,另一個表示segmentation fault (core dumped)。我做了我的程序gdb,它非常令人驚訝,它指出段錯誤到程序中的第一行,它應該打印模塊中保存的變量的值。FORTRAN分段錯誤

我編譯個個如下:

gfortran -mcmodel=large -fPIC -fopenmp -lgfortran ... 

你知道爲什麼會這樣呢? Ubuntu 12.10上的gfortran版本是4.7.2。

+1

首先啓用運行時檢查-g -fcheck = all -fbacktrace。嘗試運行。然後嘗試在gdb中運行。返回結果。這可能是由錯誤的索引,未定義的指針或其他的東西造成的...... –

+0

@VladimirF我用那些標誌設置了,gdb仍然指向相同的打印語句... – tiki

+0

但是關鍵是哪一個?顯示代碼。 –

回答

1

也許你需要增加這些機器上的堆棧大小。在Stackoverflow上有關於此主題的答案。檢查ulimit。

+0

我在命令行鍵入ulimit它說無限。 – tiki

+3

@torem:嘗試'ulimit -s'。如果這不是無限的,請使用「'ulimit -s unlimited'設置堆棧段的大小。 –