Re: gdb and Fortran90 arrays

Wu Zhou
2005-07-06T09:38:33Z

On Fri, 1 Jul 2005, Parker James E Contr AFRL/HEDR wrote:

> Hello,
> I was wondering if anyone could help me decipher the output from gdb when
> debugging Fortran90 code. Since gdb doesn't currently support Fortran90, it
> defaults to a language format called "minimal", which is fine for most uses,
> but for arrays the output is cryptic for me.

Hi Parker,

I guess that you are not using g77, because g77 don't recognize this
kind of array definition.

I also assume that you are not using gfortran. Because gdb works ok
with gfortran on this kind of array definition on my Fedora Core 4.

So would you please tell me what your compiler is, ifc, g95 or any
others? If you could give me the output of "readelf -wi yourcase",
that would be of great help. Maybe I could code a patch to make
gdb recognize your compiler.

>
> Example
> define an array
>
> real(KIND(1.0D0)), dimension(6)::x
>
> If I wanted to examine x(2), I normally (fortran 77) would use
> (gdb) p x(2)
>
> But under the minimal language setting, gdb interprets parenthesis as a
> function call--that of course doesn't exist--and therefore gdb complains
> with an error. I tried using [ ] to replace the parentheses, but gdb
> correctly replies that operator [] is undefined.
>
> The best result I have is at a gdb prompt type
> (gdb) p x
>
> And you get a list that contains an offset, ecode, base and info. Can
> anyone tell me what these things are? Ecode seems to represent the size of
> each element in the array, but that's just a guess. The rest is some sort
> of memory pointer, but I can't decipher it.

I am more convinced that you are using a different compiler than g77 and
gfortran. It seems to me that your compiler outputs some weird information
gdb can't interpret. Maybe it is your compiler that need to be changed.

Just my guess anyway. The debuginfo is very helpful to confirm or deny
this.

- Wu Zhou