我正在调试prog.f90,它有一个模块mod.f90。 如何打印参数变量值?
模块有一个在循环中调用的子程序。它接受参数,将一个存储在局部变量中,计算参数的新值,将其存储在另一个局部变量中,然后使用局部变量来测试某个条件。参数的新值将传递回main。
我试图在子程序中打印所有变量的值。 我可以打印局部变量,但打印参数变量给我一个参考地址。
(gdb)print temp_curr
$1 = 4
(gdb)print arg1
$2 = (REF TO -> ( real8 )) @0x7fffffffe0a0: -nan(0x8000000000000)
我试过......
(gdb)print $arg1
$3 = VOID
子程序看起来像这样......
SUBROUTINE sub(arg1, arg2)
IMPLICIT NONE
REAL, INTENT(inout):: arg1, arg2
REAL :: temp_prev, temp_curr
temp_prev = arg1
arg1 = (a bunch of calculations)/arg2
temp_curr = arg1
IF (temp_curr < temp_prev) THEN
stop
END IF
END SUBROUTINE sub
答案 0 :(得分:0)
gdb中的$arg1
变量仅用于gdb scrips(请参阅GDB documentation)。如果您引用正在调试的程序的变量,请仅使用arg1
。
如果要从其他模块(MODULENAME)打印变量(VARNAME),请尝试print MODULENAME::VARNAME