如何从gdb中调用Fortran内部函数?例如,给定一个数组,我想做
{{1}}
但我得到{{1}}是否有必要先在gdb中定义它们,还是有某种方式直接调用它们?
答案 0 :(得分:1)
内在函数由某些供应商特定库中的编译器实现。例如,英特尔编译器通过内联代码实现内在大小,将存储的数组长度放在给定变量中,因此没有可以调用的函数。
从技术上讲,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)