This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

gdb with intel fortran compiler


I found some curious behavior when using GDB with executables compiled
with Intel's fortran 90/95 compiler (ifort).  I'm on Debian testing,
kernel 2.4.25, gdb 5.3-debian.

Here's my little "hello world" type program:


   PROGRAM hello_world

      integer, dimension(20) :: array = (/ (0, i=1,20) /)

      do i=1, 20

         if (i == 8) then
            print *, "hello there, element 8!"
         end if

         array(i) = i
         print *, "element ", i, ": ", array(i)
      end do

   END PROGRAM hello_world


I can't "list out of the box:

   p@satan$ gdb a.out 
   (gdb) list
   1       ../sysdeps/i386/elf/start.S: No such file or directory.
           in ../sysdeps/i386/elf/start.S

but I can list the program by name:

   (gdb) list hello_world
   1       PROGRAM hello_world
   2
   3          integer, dimension(20) :: array = (/ (0, i=1,20) /)
   *snip*

What is causing this, and what's start.S?  Is there a way to make this
behavior "nicer"?

The other thing is that the GDB manual says that expressions are
evaluated as they normally are in whatever language you're using.  I
this not to be true.

GDB doesn't like this expression in a conditional breakpoint:

   (gdb) break 11 if i == 12
   A parse error in expression, near `= 12'.

but it does like this one:

   (gdb) break 11 if i = 12
   Breakpoint 2 at 0x8049da9: file test.f90, line 11.

and it even works:

   (gdb) run
   Starting program: /home/p/a.out 
   [New Thread 16384 (LWP 19674)]
   [Switching to Thread 16384 (LWP 19674)]

   Breakpoint 2, hello_world () at test.f90:11
   11            array(i) = i
   (gdb) print i
   $1 = 12

as promised, we broke at line 11, when i==12.  The conditional operator
I used was "=".  GDB didn't seem to know "==" which is what the Fortran
language uses for testing.  GDB seemed to want the "=", which like in C,
is assignment in F90.

Is this a GDB bug?  Is there a way to make expressions work the way they
should work when debugging a F90 executable?

Thanks,
Pete

-- 
Make everything as simple as possible, but no simpler.  -- Albert Einstein
GPG Instructions: http://www.dirac.org/linux/gpg
GPG Fingerprint: B9F1 6CF3 47C4 7CD8 D33E 70A9 A3B9 1945 67EA 951D


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]