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

gfortran debugging with gdb: w_powf.c: No such file or directory

我有一个正在调试的 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 相关错误,但我不确定该错误是什么意思,或者如何修复 it.This 是 fortran,为什么它调用 C 库?我需要包括一个图书馆吗?或安装缺少的依赖项? 完整的程序源在这里: http://pastebin.com/waeEFSBZ

该错误意味着源文件 w_powf.c 在您的系统上不可用。它显然与您的程序无关。您可以安全地忽略该错误。

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

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