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]

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.


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