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

gfortran使用gdb调试:w_powf.c:没有这样的文件或目录,c,debugging,gdb,fortran,gfortran,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 ZETA

我正在调试一个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库?我需要包括一个图书馆吗?或者安装缺少的依赖项? 完整程序来源:

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


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

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

它在另一行显示了类似于../sysdeps/ieee754/flt-32/e_powf.c:69的内容,但我没有看到sysdeps目录,也没有看到任何关于ieee754或其任何内容的内容。如果我想让w_powf.c文件可用,我应该将其放置在哪里?如果您创建了../sysdeps/ieee754/flt-32/并将其放置在那里会怎么样?好的,我开始。我使用命令sudo-apt-get-install-glibc-source安装了glibc-source,并获得了它警告我的所有文件。谢谢你的帮助!路径是:/usr/src/glibc/debian/sysdeps/ieee754/flt-32