[Lazarus] GDB - cannot perform pointer math on incomplete types

Martin lazarus at mfriebe.de
Tue Dec 4 03:04:33 CET 2012


On 04/12/2012 01:54, David Emerson wrote:
> This error message has often befuddled me when debugging.
> I've got a dynamic array, usually a type that I've created, e.g.
> type longint_arr = array of longint
> I'm using the Watch List and want to inspect one of the elements of such an
> array, e.g. f_list[0]. But I get this error, which I guess comes from GDB.
> Is there any way I can coerce it into giving me f_list[0], or even
> f_list[1]?
>

I would need a complete example....
Also Laz/fpc version...

Sometimes this message appears, if you declare an array without a type name.
So instead of
   type TMyArray = array of integer; var Foo: TMyArray;
you do:
   var Foo: array of integer;

If the type of the element is named, then do
   ^integer(Foo)[1]
Nested Array
   ^^integer(Foo)[1][2]

If it is a static array "array[3..5]" then the pointer type cast still 
starts at index 0 (so you must subtract the low bound from all indices)

It may also happen with nested arrays, and (unnamed (inline in "var" 
declared) records)
   var Foo: array of record ... end;

You may also try switching between stabs and dwarf (project options / 
/linking)




More information about the Lazarus mailing list