爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2855|回复: 4

[求助] 请教一下,这个Fortran程序是否有问题,运行时候总是报错

[复制链接]

新浪微博达人勋

发表于 2018-1-10 08:01:34 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
请教大家一下,我的Fortran程序是否有问题,运行时,总是报错Segmentation fault (core dumped),急求各位大神!
  1. PROGRAM MAIN
  2. IMPLICIT NONE
  3. CHARACTER*40:: fdate,UTC_date
  4. CHARACTER*40:: fdate_char,UTC_date_char
  5. CHARACTER*40:: cTemp
  6. CHARACTER*80:: plot_path
  7. CHARACTER*40:: id
  8. CHARACTER*80:: st_name='SURFACE / CHINA'
  9. CHARACTER*80:: plat_form='FM-12 SYNOP'
  10. CHARACTER*80:: source='MICAPS DIAMOND ONE'
  11. INTEGER i,j,k,qc

  12. INTEGER yr,mon,date,hr,stat_num  
  13. INTEGER,ALLOCATABLE:: stat_id(:),sta_class(:)  
  14. REAL,ALLOCATABLE:: stat_elev(:),temp(:),longi(:),lati(:),dew(:),win_dir(:),V(:),&
  15. cloud(:),presea(:),pre3h(:),weather1(:),weather2(:),rain6h(:),&
  16. lcloudz(:),lcloudl(:),lcloudh(:),visib(:),weathn(:),mcloudz(:),&
  17. hcloudz(:),mark1(:), mark2(:), vtemp24(:), vpre24(:),psfc(:),stat_class(:)

  18. REAL a(13)
  19. INTEGER b(13)
  20. LOGICAL is_sound,bogus,discard
  21. CHARACTER*40:: stat_name='aaa'
  22. !.......................INCLUDE.................
  23.        INCLUDE 'PARMS3.EXT'
  24.        INCLUDE 'FDESC3.EXT'
  25.        INCLUDE 'IODECL3.EXT'
  26.        INCLUDE 'netcdf.inc'
  27. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  28. fdate='15010208'   !beijing time
  29. UTC_date='15010200' !UTC
  30. plot_path='/home/sxw/xiaowei/' !PATH

  31. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


  32. qc=0
  33. is_sound=.false.
  34. bogus=.false.
  35. discard=.false.
  36. fdate_char='20'//trim(fdate)//'0000'
  37. UTC_date_char='20'//trim(UTC_date)//'0000'
  38. a=-888888.0
  39. b=0

  40. OPEN (101,FILE=trim(plot_path)//'plot/'//trim(adjustl(fdate))//'.000')
  41. READ(101,*)
  42. READ(101,*) yr,mon,date,hr,stat_num
  43. CLOSE(101)

  44. ALLOCATE (stat_id(stat_num))
  45. ALLOCATE (longi(stat_num))
  46. ALLOCATE (lati(stat_num))
  47. ALLOCATE (stat_elev(stat_num))
  48. ALLOCATE (temp(stat_num))
  49. ALLOCATE (dew(stat_num))
  50. ALLOCATE (win_dir(stat_num))
  51. ALLOCATE (V(stat_num))
  52. ALLOCATE (sta_class(stat_num))
  53. ALLOCATE (cloud(stat_num))
  54. ALLOCATE (presea(stat_num))
  55. ALLOCATE (pre3h(stat_num))
  56. ALLOCATE (weather1(stat_num))
  57. ALLOCATE (weather2(stat_num))
  58. ALLOCATE (rain6h(stat_num))
  59. ALLOCATE (lcloudz(stat_num))
  60. ALLOCATE (lcloudl(stat_num))
  61. ALLOCATE (lcloudh(stat_num))
  62. ALLOCATE (visib(stat_num))
  63. ALLOCATE (weathn(stat_num))
  64. ALLOCATE (mcloudz(stat_num))
  65. ALLOCATE (hcloudz(stat_num))
  66. ALLOCATE (mark1(stat_num))
  67. ALLOCATE (mark2(stat_num))
  68. ALLOCATE (vtemp24(stat_num))
  69. ALLOCATE (vpre24(stat_num))
  70. ALLOCATE (stat_class(stat_num))
  71.       OPEN(101,FILE=trim(plot_path)//'plot/'//trim(adjustl(fdate))//'.000')
  72.                 READ(101,*)
  73.                 READ(101,*)
  74.                 DO i=1,stat_num
  75.                     READ(101,*) stat_id(i),longi(i),lati(i),stat_elev(i),sta_class(i),cloud(i),&
  76.                                 win_dir(i),V(i),presea(i),pre3h(i),weather1(i),weather2(i),&
  77.                                 rain6h(i),lcloudz(i),lcloudl(i),lcloudh(i),dew(i),visib(i),&
  78.                                 weathn(i),temp(i),mcloudz(i),hcloudz(i),mark1(i),mark2(i),vtemp24(i),vpre24(i)
  79.                 ENDDO
  80.       CLOSE(101)

  81. OPEN(101,FILE='obs.20'//trim(adjustl(UTC_date))//'',ACCESS='append')
  82.        DO i=1,stat_num
  83.                
  84.                WRITE(ctemp,'(i5)') stat_id(i)
  85.                WRITE(id,'(i5)') stat_id(i)
  86.                WRITE(101,'(2f20.5,4A40,f20.5,5I10,3L10,2I10,A20,13(f13.5,I7))') lati(i), longi(i),adjustl(id),&
  87.                                                                                 st_name,plat_form,source,stat_elev(i),-888888,-888888,-888888,&
  88.                                                                                 i,-888888,is_sound,bogus,discard,-888888,-888888,trim(UTC_date_char),&  
  89.                                                                                 -888888.,0,((a(k),b(k)),k=1,12)
  90.                                 IF(presea(i)<=500.) psfc(i)=1000+presea(i)/10
  91.                                 IF(presea(i)>500.) psfc(i)=900+presea(i)/10
  92.                                 IF(presea(i)==9999.) psfc(i)=-888888.
  93.                                 IF(temp(i)==9999.) temp(i)=-888888.-273.16
  94.                                 IF(dew(i)==9999.) dew=-888888.-273.16
  95.                                 IF(win_dir(i)==9999.) win_dir(i)=-888888.
  96.                                 IF(V(i)==9999.) V(i)=-888888.
  97.                                 WRITE(101,'(10(F13.5,I7))') psfc(i)*100,qc,stat_elev(i),qc,(temp(i)+273.16),qc,(dew(i)+273.16),qc,&
  98.                                                             V(i),qc,win_dir(i),qc,((a(k),b(k)),k=1,4)

  99.                 WRITE(101,'(10(F13.5,I7))') -777777.,0,-777777.,0,((a(k),b(k)),k=1,8)
  100.                 WRITE(101,*) 50,0,0
  101.        ENDDO
  102. CLOSE(101)

  103. DEALLOCATE (stat_id)
  104. DEALLOCATE (longi)
  105. DEALLOCATE (lati)
  106. DEALLOCATE (stat_elev)
  107. DEALLOCATE (stat_class)

  108. DEALLOCATE (temp)

  109. DEALLOCATE (win_dir)
  110. DEALLOCATE (V)
  111. DEALLOCATE (cloud)
  112. DEALLOCATE (presea)
  113. DEALLOCATE (pre3h)
  114. DEALLOCATE (weather1)
  115. DEALLOCATE (weather2)
  116. DEALLOCATE (rain6h)
  117. DEALLOCATE (lcloudz)
  118. DEALLOCATE (lcloudl)
  119. DEALLOCATE (lcloudh)
  120. DEALLOCATE (visib)
  121. DEALLOCATE (weathn)
  122. DEALLOCATE (mcloudz)
  123. DEALLOCATE (hcloudz)
  124. DEALLOCATE (mark1)
  125. DEALLOCATE (mark2)
  126. DEALLOCATE (vtemp24)
  127. DEALLOCATE (vpre24)



  128. END
复制代码


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-1-10 10:28:29 | 显示全部楼层
报错信息不全,一般自己百度报错信息就能找到解决方案
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-1-10 17:06:47 | 显示全部楼层
lqouc 发表于 2018-1-10 10:28
报错信息不全,一般自己百度报错信息就能找到解决方案

我在网上查看了,但是仍然没有找到,用gdb调试查找core报错文件,显示如下:
  1. Program terminated with signal 11, Segmentation fault.
  2. #0  0x000000000040e4e4 in main () at ./little_r_micaps.f90:91
  3. 91                     WRITE(101,'(2f20.5,4A40,f20.5,5I10,3L10,2I10,A20,13(f13.5,I7))') lati(i), longi(i),adjustl(id),&
  4. Missing separate debuginfos, use: debuginfo-install cyrus-sasl-lib-2.1.23-13.el6_3.1.x86_64 glibc-2.12-1.132.el6.x86_64 keyutils-libs-1.4-4.el6.x86_64 krb5-libs-1.10.3-10.el6_4.6.x86_64 libcom_err-1.41.12-18.el6.x86_64 libcurl-7.19.7-37.el6_4.x86_64 libidn-1.18-2.el6.x86_64 libselinux-2.0.94-5.3.el6_4.1.x86_64 libssh2-1.4.2-1.el6.x86_64 nspr-devel-4.10.0-1.el6.x86_64 nss-3.15.1-15.el6.x86_64 nss-softokn-freebl-3.14.3-9.el6.x86_64 nss-util-3.15.1-3.el6.x86_64 openssl-1.0.1e-15.el6.x86_64 zlib-1.2.3-29.el6.x86_64
复制代码

但是感觉这个地方没有错误啊,不知道您知道吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-1-10 17:58:31 | 显示全部楼层
齐天笑猴 发表于 2018-1-10 17:06
我在网上查看了,但是仍然没有找到,用gdb调试查找core报错文件,显示如下:

但是感觉这个地方没有错 ...

看上去没问题,我也不知道该怎么修改,只能多尝试了
比如trim adjust 这些都直接在前面定义成新的变量,带着函数在输出语句里容易出错
((a(k),b(k)),k=1,12)这个最好也都拆开写
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-1-11 08:19:21 | 显示全部楼层
哦,好的。非常感谢。我尝试一下
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表