在gdb中调用Fortran内置函数

3
如何在gdb中调用Fortran内置函数?例如,给定一个数组,我想要执行以下操作:
call size(array)

但我得到了当前上下文中没有“size”符号。需要先在gdb中定义它们,还是直接调用它们的方法?

1个回答

3

内部函数是由一些厂商特定的库在编译器中实现的。例如,英特尔编译器通过内联代码实现了大小内部函数,将存储的数组长度放置到给定变量中,因此没有可以调用的函数。

从技术上讲,GDB/IILDB可以评估给定二进制文件中实现的任何函数(您可以在大多数基于Unix的系统上使用nm实用程序找到所有这些函数)。例如,如果程序定义了以下函数:

function get_pi() result(pi)
    real pi

     pi = 3.1415926
end function

可以通过以下语句在调试器中调用它:

p (float) get_pi()

请记住,由nm提供的该函数的真实名称将不同。通常以下划线字符开头和结尾,如 '_gdb_array_module_mp_get_pi_'。
但您始终可以使用核心C库中的任何函数,例如返回给定变量分配的内存量的size。为了确定Fortran程序中的数组大小,可以使用以下语句:
p sizeof(array)/sizeof(*array)

那么这是否意味着您无法调用内置函数,例如 maxvalminval。 另外,您能否详细说明一下关于“核心 C 库”的评论?我怀疑这意味着 libc,<math.h> 在 libc 中,因此按照这个逻辑,我们应该能够从 GDB 调用 sin(x),但事实并非如此。 - gnikit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接