1

モジュール mod.f90 を持つ prog.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 scrips でのみ使用されます ( GDB のドキュメントを参照してください)。デバッグ中のプログラムの変数を参照する場合は、 のみを使用してくださいarg1

print MODULENAME::VARNAME別のモジュール (MODULENAME) から変数 (VARNAME) を出力したい場合に試してください。

于 2013-02-05T09:39:50.193 に答える