bug-gdb
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bug in structure???


From: Yannick Copin
Subject: Bug in structure???
Date: Mon, 23 Feb 2004 19:22:07 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040113

Hi,

sorry to bother you with probably a stupid question regarding gdb, but I found a strange behavior in gdb 6.0 used along with gcc 3.3.2 (RedHat 7.2). Consider the following minimalist program:

#define lg_name 80L

typedef struct
{
  char   name[lg_name+1];
  double step;
} E3D_file;

int main()
{
  E3D_file cube;

  cube.step = 1.;
  return(0);
}

After standard compilation (gcc -g -Wall, version 3.3.2), gdb ./a.out gives:

GNU gdb 6.0
[...]
(gdb) b main
Breakpoint 1 at 0x80483a0: file testE3D.c, line 14.
(gdb) r
Starting program: /home/novae/ycopin/soft/c/tests/a.out

Breakpoint 1, main () at testE3D.c:14
14        cube.step = 1.;
(gdb) display cube.step
1: cube.step = 5.3440552952533551
(gdb) n
16        return(0);
1: cube.step = 5.3440561285242438
(gdb)
17      }
1: cube.step = 5.3440561285242438
(gdb)
Program exited normally.

The 1st cube.step = 5.34 is normal, but after the initialization cube.step = 1, I still got 5.34!!!

This behavior doesnt show up with gcc 2.96 (RedHat):

GNU gdb Red Hat Linux 7.x (5.0rh-15) (MI_OUT)

Breakpoint 1, main () at testE3D.c:14
14      cube.step = 1.;
(gdb) display cube.step
1: cube.step = -1.9967124462120234
(gdb) n
16      return(0);
1: cube.step = 1

but it's there with gcc 3.3 (instead of 3.3.2), and with gdb 5.3 and 5.2.1 (instead of 6.0).

Furthermore, if I add a printf from the stdio lib, here is what I got (gcc 3.3.2):

Breakpoint 1, main () at testE3D.c:16
16        printf("step (before) = %lf\n",cube.step);
(gdb) display cube.step
1: cube.step = 5.3440552952534404
(gdb) n
step (before) = 0.000000
17        cube.step = 1.;
1: cube.step = 5.3440552952534404
(gdb) n
18        printf("step (after) = %lf\n",cube.step);
1: cube.step = 5.3440561285242438
(gdb)
step (after) = 1.000000
20        return(0);
1: cube.step = 5.3440561285242438

The print-out via printf and the display of gdb don't give the same thing!!!

Is it a bug in gdb (or gcc?), or is it just that I don't know how to use it???

Cheers.
--
  .~.   Yannick COPIN  (o:>*  Doctus cum libro
  /V\   Institut de physique nucleaire de Lyon (IN2P3 - France)
 // \\  Tel: (33/0) 472 448 065
/(   )\ http://snovae.in2p3.fr/ycopin/
 ^`~'^




reply via email to

[Prev in Thread] Current Thread [Next in Thread]