1

我正在调试 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
4

1 回答 1

0

gdb 中的$arg1变量仅在 gdb 脚本中使用(请参阅GDB 文档)。如果您引用被调试程序的变量,请仅使用arg1.

print MODULENAME::VARNAME如果您想从另一个模块 (MODULENAME) 打印变量 (VARNAME),请尝试

于 2013-02-05T09:39:50.193 回答