dbx コマンドによるデバッグ

Fortran 90 割り当て可能配列

次の例は、dbx で割り当て済み配列を処理する方法を示しています。


demo% f90 -g Alloc.f90
demo% dbx a.out
a.out の読み込み中
ld.so.1 の読み込み中
  ......   (注 1)
(dbx) list 1,$
    1   PROGRAM TestAlocate
    2   INTEGER n, status
    3   INTEGER, ALLOCATABLE :: buffer(:)
    4           PRINT *, `Size?'
    5           READ *, n
    6           ALLOCATE (buffer(n), STAT=status)
    7           IF (status /= 0) STOP `cannot allocate buffer'
    8           buffer(n)=n
    9           PRINT *,buffer(n)
   10           DEALLOCATE (buffer, STAT = status)
   11   END
(dbx) stop at 6
(2) stop at "Alloc.f90":6
(dbx) stop at 9
(3) stop at "Alloc.f90":9
(dbx) run
実行中: a.out
(プロセス id 23512)
 Size?
1000
MAIN で停止しました 行番号 6  ファイル "Alloc.f90"  (注 2)
    6           ALLOCATE (buffer(n), STAT=status)
(dbx) whatis buffer
INTEGER*4 , allocatable::buffer(:)
(dbx) next
MAIN で停止しました 行番号 7  ファイル "Alloc.f90"
    7           IF (status /= 0) STOP `cannot allocate buffer'
(dbx) whatis buffer
INTEGER*4  buffer(1:1000)
(dbx) cont
MAIN で停止しました 行番号 9  ファイル "Alloc.f90"  (注 3)
    9           PRINT *,buffer(n)
(dbx) print n
n = 1000
(dbx) print buffer(n)
buffer(n) = 1000   (注 4)

注 1: Alloc.f90

注 2: 行番号 6 ではサイズは未知

注 3: 行番号 9 ではサイズは未知

注 4: buffer (1000)