This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: gdb shows source line multiple times before executing !!
mohanlal jangir writes:
>
> > Because GCC splits the code for the line into multiple parts. Part of
> > the line has executed when you step over it, but it may not be
> > immediately obvious how. For instance, given:
> > a = b + c;
> > the first time you step over it may load b and c from memory; the
> > second time may add them; and only the third will store the result into
> > a.
> hmm... but sometimes it behaves even worse. For example there are two lines
> a = b + c;
> d = e + f;
> then first gdb shows line a = b + c; then d = e + f and then again a = b +
> c. And while showing d = e + f first time if I try to print value of a, it
> will be some uninitialised (that indicates that a = b + c has not been
> executed). Then on next "next" command I will see line a = b +c again and
> then valute of a will be correct one.
Yes, only part of the assembly instructions that correspond to the
line a = b+c; has been executed at that time, and the result hasn't
been transfered into the location of a yet. Try to use stepi. Also
compare with the execution on the same program compiled with -O0 or just
with -g.
elena
>
> > > mohanlal jangir wrote:
> > >
> > >While single stepping with gdb, quite frequently I see sorce lines
> > appearing
> > >multiple times i.e. gdb shows some line that will be executed on command
> > >"next", but that is actully not. After next "next" command, I see same
> > line
> > >appearing. This happens two or three times and then finally that line is
> > >executed.