使用gdb进行gfortran调试:w_powf.c:没有这样的文件或目录

时间:2016-01-08 01:08:53

标签: c debugging gdb fortran gfortran

我正在进行Fortran计划。我有一个可变数据列表,其中一个预期变量几乎是其预期值的两倍。 所以我用调试标志编译了程序,并开始调试: 程序名称是hfock

$gdb hfock
(gdb) break hfock
(gdb) run
Starting program: /home/e/Desktop/hfock hfock
Breakpoint 1, hfock () at hfock.f:16
16        ZETA1 = 2.173171
(gdb) s
17        ZETA2 = 1.188530
(gdb) s
18        WRITE (*, '( "Zeta1:", F7.4 / "Zeta2:", F7.4 )' )  ZETA1, ZETA2
(gdb) s
Zeta1: 2.1732
Zeta2: 1.1885
21        PLUS=ZETA1+ZETA2
(gdb) s 
22        PROD=ZETA1*ZETA2
(gdb) s
23        DIFF=ZETA1-ZETA2
(gdb) s
24        S12=8.*PROD**1.5/PLUS**3
(gdb) s
__powf (x=2.58287883, y=1.5) at w_powf.c:26
26  w_powf.c: No such file or directory.

相应的(24,25,26)代码行是:

  S12=8.*PROD**1.5/PLUS**3
  T11=0.5*ZETA1**2
  T22=0.5*ZETA2**2

我认为这可能是一个数学库,或glibc相关的错误,但我不确定错误意味着什么,或者如何解决它。这是fortran,为什么它调用C库?我需要包含一个库吗?或者安装缺少的依赖项? 完整的程序源: http://pastebin.com/waeEFSBZ

2 个答案:

答案 0 :(得分:1)

错误表示您的系统上没有源文件 w_powf.c 。它显然与你的程序没有关系。您可以放心地忽略该错误。

请注意,您提到的行有**运算符,我想这是在该文件中实现的,所以它只是告诉您无法访问该运算符的实现的源代码

答案 1 :(得分:1)

**在Fortran指数运算符中。指数是在glibc w_powf.c中实现的。 Gdb无法在您的来源中找到此文件。这不是错误,而是诊断。