Re: Printing allocatable v.s. normal arrays from fortran code in GDB

kamaraju kusumanchi <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CABpbYaeF2Tifok5PQqXTXA7BeVqzZyps-vSioyz08K2CCRbWKg@mail.gmail.com>
On Sun, Feb 8, 2015 at 4:53 PM, Morten Olsen Lysgaard
<[email protected]> wrote:
> I am writing some scientific fortran code where I have some allocatable arrays.
> When I want to print them in GDB, the data I get is gibberish, even
> though the program itself easily can compute with the allocated array.
> To demonstrate the problem I have created a small archive containing a
> test program, a makefile and the output generated when run on my
> system.
> The program is alloc.f90
> The output is is output.txt
> The program can be compiled and run by running make on a system with
> gfortran installed.
> Because the mailing list doesn't support attatchments the tarfile is
> available at (1 Kb)
> https://www.dropbox.com/s/zj4pgcbp44p5q4z/alloc.tar.gz?dl=1
>
> The interesting part is line 22-23 in output.txt. I would expect the
> output on the two lines to be the same, but for some reason the
> allocatable array is printed wrong.
>
> Is this a known problem? Am I misunderstanding how allocatable arrays
> work? Any help would be greatly appreciated.
>
> GDB version: GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
> gfortran version: GNU Fortran (Ubuntu 4.9.2-0ubuntu1~14.04) 4.9.2
>
> Have a nice day - Morten

Please use the latest version, gdb 7.9. I am seeing the problem in
7.7.1+dfsg-5 but 7.9 seems to work fine.


% ~/software/myroot/gdb-7.9/bin/gdb ./a.out
GNU gdb (GDB) 7.9
...
(gdb) b alloc.f90:18
Breakpoint 1 at 0x400bd0: file alloc.f90, line 18.
(gdb) r
Starting program: /home/rajulocal/debug/gdb_fortran/alloc/a.out
   55.0000000     ,    55.0000000

Breakpoint 1, average () at alloc.f90:18
18        write(*,*) 'done'
(gdb) p p1(1)
$1 = 1
(gdb) p p2(1)
$2 = 1
(gdb) p p2(5)
$3 = 5

However, when I used the old version, I get

 % /usr/bin/gdb ./a.out
GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1
...
(gdb) b alloc.f90:18
Breakpoint 1 at 0x400bd0: file alloc.f90, line 18.
(gdb) r
Starting program: /home/rajulocal/debug/gdb_fortran/alloc/a.out
   55.0000000     ,    55.0000000

Breakpoint 1, average () at alloc.f90:18
18        write(*,*) 'done'
(gdb) p p1(1)
$1 = 1
(gdb) p p2(1)
$2 = 8.84510801e-39
(gdb) p p2(5)
$3 = 3.93764868e-43

raju
-- 
Kamaraju S Kusumanchi
http://raju.shoutwiki.com/wiki/Blog
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.