2010-07-08 57 views
1

我仍然是綠色的調試F77和我有一些數組邊界問題。我最近修改了冗長的代碼以獲得新的數組大小。在我注意到方法改變一個數組,改變另一個數組之前,一切似乎都沒有問題。我認爲,在這段代碼中,一個賦值超出範圍並寫入其他數組。Fortran 77調試器來檢查數組邊界

在Linux環境中是否有一個調試器/工具會'捕捉'超出界限異常?

我目前使用gfortran

回答

2

沒有爲gfortran插入檢查出界

的標記-fbounds檢查數組 標和針對申報 最小值和最大值啓用生成的運行時檢查。它也 檢查假設的數組索引和 延期的形狀數組與 實際分配的邊界。在未來 這也可能包括其他形式的 檢查,例如。檢查子字符串 參考。

http://linux.die.net/man/1/gfortran

輸出是期望:

At line 2153 of file src/cdtm0402.f 
Fortran runtime error: Array reference out of bounds for array 'wv1mp', upper bound of dimension 1 exceeded (78 > 77) 

Backtrace for this error: 
    + function coefdp (0x448BC3) 
    at line 2153 of file cdtm0402.f 
    + in the main program 
    at line 371 of file cdtm0402.f 
    + /lib64/libc.so.6(__libc_start_main+0xfd) [0x7ffff703da7d] 
1

如果這是一個僱主,你可能希望他們購買的許可證「燧石」 - 就像「皮棉」爲C,但對於FORTRAN。

此外,不gdb/dbx/ddd做fortran調試嗎?

呵呵,有時你需要在f77中打開特殊的標誌來保存可執行文件和目標文件中的字符串和調試信息,就像「cc -g」一樣。

+0

學術環境...可以GDB/DBX/DDD做到這一點?我不是這些人的專業人士。 – ccook 2010-07-08 19:51:45

+0

我已經在編譯器上試過了-g標誌。不幸的是,這幫助了一大堆,而不是數組邊界。 – ccook 2010-07-08 19:53:34

+0

我可以發誓標準的調試器允許在Fortran上工作。在C和Fortran混合在一起的舊工作中,總是讓C++對象困惑。另請注意,f77可能對調試符號有編譯器要求。 – eruciform 2010-07-08 19:54:05