程序接收到的信号SIGABRT(FORTRAN)
问题描述:
我有问题,这个代码时,我跑反转script.I曾尝试使用gdb调试:程序接收到的信号SIGABRT(FORTRAN)
Starting program: /home/milenko/fg77/f2/bin/inverse_2d
INVERSE: calculate slowness update using LSQR and regularization
open: No such file or directory
apparent state: unit 48 named stop.in
lately writing sequential formatted external IO
Program received signal SIGABRT, Aborted.
0x0012d422 in __kernel_vsyscall()
答
看起来好像你的程序试图写入文件在单元48上称为stop.in
,并遇到问题。造成这种情况的最可能原因是执行WRITE语句时该文件不存在,这又意味着将该文件“附加”到单元48的OPEN语句不成功。
编辑
你的代码片段并不表明你检查该语句
打开返回的错误代码(48,文件= 'stop.in',状态= '老')
我建议你弹出iostat参数,看看它告诉你什么。
进一步编辑
我在原来的答复替代的话“不存在”的第二句“不会在程序期望存在的位置”。
我不认为so.Part的代码: – milenko 2012-03-18 11:28:54
写(6335) 335格式( 'INVERSE:', + '使用LSQR和正规化计算缓慢更新') 开放(50,文件= 'NOWRITE' ,状态= '旧',ERR = 9999,的iostat = ioflag) 9999如果(ioflag.gt.0)然后 IO = 0 否则 IO = 51 端如果 ç 开放(48,文件='停止.in',status ='old') 阅读(48,*)iistop – milenko 2012-03-18 11:30:05
@milenkomarkovic:请将代码编辑到您的问题中,而不是发表评论 – talonmies 2012-03-18 11:33:03