Good morning/afternoon/evening everyone (depending on where you are)! I've often run into something annoying debugging FPC programs with GDB, so I boiled it down a little bit into something that can be reproduced.
Given this simple program: ============================================= program project1; {$mode objfpc}{$H+} type Record1 = record a : integer; b : integer; end; Record1Array = array of Record1; Record2 = record c : integer; recs : Record1Array; end; PRecord2 = ^Record2; var myRec2 : PRecord2; i : integer; begin new(myRec2); myRec2^.c := 16; SetLength(myRec2^.recs, myRec2^.c); for i := 0 to myRec2^.c-1 do begin myRec2^.recs[i].a := i; myRec2^.recs[i].b := myRec2^.c - i - 1; writeln(myRec2^.recs[i].a, ',', myRec2^.recs[i].b); end; dispose(myRec2); end. ============================================= If I compile this program with FPC 2.4.4 with debugging (-g), line numbers in backtraces (-gl), and dwarf debug information (-gw), then fire up GDB (I'm in Linux, by the way), put a breakpoint at the writeln, then run, observe what happens: (gdb) print MYREC2^ $3 = {C = 16, RECS = 0x7ffff7fee050} (gdb) print MYREC2^.RECS $4 = (^RECORD1ARRAY) 0x7ffff7fee050 (gdb) print MYREC2^.RECS^[I] $5 = {A = 0, B = 15} (gdb) print MYREC2^.RECS^[I].A Type RECORD1ARRAY is not a structure or union type. GDB seems to be able to keep track of things find up to the point where I try to access an element of the records which comprise the array. I can print MYREC2^.RECS^[I] just fine, but not print MYREC2^.RECS^[I].A. Is this a bug in the GDB info generated by the compiler, or a bug in GDB itself? Thanks, -SG -- This email is fiction. Any resemblance to actual events or persons living or dead is purely coincidental. Seth Grover _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel