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

Fortran 90 構造型へのポインタ

構造体、f90 構造型およびポインタを dbx で表示できます。

DebStruc.f90


demo% f90 -o debstr -g DebStruct.f90
demo% dbx debstr
debstr の読み込み中
ld.so.1 の読み込み中
 ......
(dbx) list 1,$    (注 1)
     1 Program DebStruPtr  ! Debug a Structure & pointer
    2       TYPE product
    3           INTEGER         id
    4           CHARACTER*16    name
    5           CHARACTER*8     model
    6           REAL            cost
    7           REAL            price
    8       END TYPE product
    9
   10       TYPE(product), TARGET :: prod1, prod2   (注 2)
   11       TYPE(product), POINTER :: curr, prior   (注 3)
   12
   13       curr => prod2   (注 4)
   14       prior => prod1  (注 5)
   15       prior%id = 82   (注 6)
   16       prior%name = "Coffe  Cup"
   17       prior%model = "XL"
   18       prior%cost = 24.0
   19       prior%price = 104.0
   20       curr = prior    (注 7)
   21       WRITE (*, *) curr%name, " ", prior%name  (注 8)
   22   END PROGRAM DebStruPtr
   23
(dbx) stop at 21
(2) stop at "DebStruct.f90":21
(dbx) run
実行中: debstr
(dbx) run
実行中: debstr
(プロセス id 23726)
MAIN で停止しました 行番号 21  ファイル "DebStruct.f90"
   21       WRITE (*, *) curr%name, " ", prior%name
(dbx) print prod1
prod1 = (
    id    = 82
    name  = "Coffe  Cup      "
    model = "XL      "
    cost  = 24.0
    price = 104.0
)

注 1: 構造型を宣言します。

注 2: prod1 および prod2 ターゲットを宣言します。(#10)

注 3: curr および prior ポインタを宣言します。(#11)

注 4: currprod2 を指すようにします。(#13)

注 5: priorprod1 を指すようにします。(#14

注 6: prior を初期化します。(#15

注 7: currprior に設定します。(#20)

注 8: curr および prior から名前を印刷します。(#21)

上記において dbx は、構造型のすべての要素を表示します。

構造体を使用して、f90 構造型の項目について照会できます。


(dbx) whatis prod1  (注 1)
product  prod1
(dbx) whatis -t product   (注 2)
type product
    INTEGER*4 id
    character*16 name
    character*8 model
    REAL*4 cost
    REAL*4 price
end type product

注 1: 変数について尋ねます。

注 2: 型 (-t) について尋ねます。

ポインタを出力するには、次のようにします。


(dbx) print prior  (注 1)
prior = (
    id    = 82
    name  = "Coffe  Cup      "
    model = "XL      "
    cost  = 24.0
    price = 104.0
)

注 1: dbx は、アドレスであるポインタの内容を表示します。このアドレスは、実行のたびに異 なる場合があります。