Sun Studio 12: dbx コマンドによるデバッグ

Fortran 95 構造型へのポインタ

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


demo% f95 -o debstr -g DebStruc.f95
 demo% dbx debstr
 (dbx) stop in main
 (2) stop in main
 (dbx) list 1,99
     1   PROGRAM DebStruPtr! Debug structures & pointers
構造型を宣言します。
     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
prod1 および prod2 ターゲットを宣言します。

    10      TYPE(product), TARGET :: prod1, prod2
curr および prior ポインタを宣言します。
    11      TYPE(product), POINTER :: curr, prior
    12
curr が prod2 を指すようにします。
    13      curr => prod2
prior が prod1 を指すようにします。
    14      prior => prod1
prior を初期化します。
    15      prior%id = 82
    16      prior%name = "Coffee Cup"
    17      prior%model = "XL"
    18      prior%cost = 24.0
    19      prior%price = 104.0
curr を prior に設定します。
    20      curr = prior
curr および prior から名前を出力します。
    21      WRITE ( *, * ) curr%name, " ", prior%name
    22   END PROGRAM DebStruPtr
 (dbx) stop at 21
 (1) stop at "DebStruc.f95":21
 (dbx) run
実行中: debstr
(プロセス id 10972)
MAIN で停止しました 行番号 21 ファイル "DebStruct.f95"
   21      WRITE ( *, * ) curr%name, " ", prior%name
(dbx) print prod1
 prod1 = (
    id = 82
    name = "Coffee Cup"
    model = "XL"
    cost = 24.0
    price = 104.0
)

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

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


変数について尋ねます。
(dbx) whatis prod1
 product prod1
型 (-t) について尋ねます。
 (dbx) whatis -t product
 type product
    integer*4 id
    character*16 name
    character*8 model
    real cost
    real price
 end type product

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


dbx は、アドレスであるポインタの内容を表示します。このアドレスは、実行のたび
に異なる場合があります。
(dbx) print prior
 prior = (
     id    = 82
     name = 'Coffee Cup'
     model = 'XL'
     cost = 24.0
     price = 104.0
 )