You can show structures--f90 derived types, and pointers with dbx.
DebStruc.f90 Declare a derived type. Declare prod1 and prod2 targets. Declare curr and prior pointers. Make curr point to prod1. Make prior point to prod1. Initialize prior. Set curr to prior. Print name from curr and prior. demo% f90 -o debstr -g DebStruc.f90 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 10 TYPE(product), TARGET :: prod1, prod2 11 TYPE(product), POINTER :: curr, prior 12 13 curr => prod2 14 prior => prod1 15 prior%id = 82 16 prior%name = "Coffee Cup" 17 prior%model = "XL" 18 prior%cost = 24.0 19 prior%price = 104.0 20 curr = prior 21 WRITE ( *, * ) curr%name, " ", prior%name 22 END PROGRAM DebStruPtr (dbx) stop at 21 (1) stop at "DebStruc.f90":21 (dbx) run Running: debstr
(process id 10972) stopped in main at line 21 in file "DebStruc.f90" 21 WRITE ( *, * ) curr%name, " ", prior%name (dbx) print prod1 prod1 = ( id = 82 name = "Coffee Cup" model = "XL" cost = 24.0 price = 104.0 )
Above, dbx displays all fields of the derived type, including field names.
You can use structures--inquire about an item of an f90 derived type.
Ask about the variable Ask about the type (-t) (dbx) whatis prod1 product prod1 (dbx) whatis -t product type product integer*4 id character*16 name character*8 model real cost real price end type product
dbx displays the contents of a pointer, which is an address. This address can be different with every run. (dbx) print prior prior = ( id = 82 name = 'Coffee Cup' model = 'XL' cost = 24.0 price = 104.0 )