fortran - 了解 fortran 中的回溯错误
问题描述
当我执行使用gfortran
. 该错误之后是指向内存位置的此错误的回溯。
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:
#0 0x2b2f8e39da2d in ???
#1 0x2b2f8e39cc63 in ???
#2 0x311823256f in ???
#3 0x311827a7be in ???
#4 0x2b2f8e39cff2 in ???
#5 0x2b2f8e4adde6 in ???
#6 0x2b2f8e4ae047 in ???
#7 0x2b2f8e4a62d7 in ???
#8 0x40482a in instrument_
at /home/user/model/instrument.f:90
#9 0x406c1e in funcdet
at /home/user/model/funcsynth.f:67
#10 0x406c98 in main
at /home/user/model/funcsynth.f:78
Segmentation fault (core dumped)
我想知道第一个错误发生在哪里——是回溯的第一行还是最后一行?此外,可能有助于我调试问题的策略。
更新:
回溯后,第 90 行instrument
涉及打开文件,如下所示:
out_file3 = 'new_file'
OPEN(unit=3,file=out_file3,status='unknown')
为了确定背后的问题,我通过这样做合并了错误检查:
OPEN(unit=3,file=out_file3,status='unknown',iostat=io_status, err=100)
100 write(STDOUT,*) 'io status=', io_status
代码退出并出现错误:错误:(1) 处的 ERR 规范值无效。如何确定 ERR 规范的适当值?这让我怀疑 unit=3 可能是错误的原因,我已经更改了 unit 的值,但每次都会收到“Segmentation fault (core dumped)”错误。
更新 2:
OPEN(unit=3,file=out_file3,status='unknown',err=17)
17 write(STDOUT,*) 'Problem'
仍然Segmentation fault (core dumped)
在对应的行得到错误OPEN...
。我只能猜测这unit=3
是问题的根本原因。
更新 3
尝试一个自给自足的例子:
character*280 testfile,finalfile,outfile
DIR = '/storage/work/user/'
testfile = 'test.dat'
CALL getenv(DIR,outfile)
CALL sappend(outfile,testfile,finalfile)
OPEN(unit=3,file=finalfine,status='new')
write(3,*) 'Test'
END
解决方案
推荐阅读
- python - 其他用户的个人资料没有显示,它只显示当前用户名。如何显示其他用户的个人资料?
- c++ - 如何在插入 BST 之前访问对象
- python - 如何在 PythonAnywhere 的环境变量中定位 Django 设置模块?
- linux - Shell if[[]] 在执行时给出语法错误
- javascript - 如何在 3d 平面中向上移动图像
- google-bigquery - BigQuery concat 嵌套数组 json
- python - python - 当我希望对象具有 None 值时出现“NoneType”对象错误?
- elasticsearch - 跳过数组中某些值的索引,但将它们保留在 _source
- laravel - 在 Laravel 的 API 控制器中获取经过身份验证的用户
- slack - 使用“conversation.info”Slack API 调用时出现“missing_scope”错误