This is the mail archive of the gdb@sourceware.org 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: Getting pissed off by gdb. Please help with stepping in.


On Thu, Mar 18, 2010 at 12:22:20AM -0700, Doug Evans wrote:
> This patch for cvs head gets things working for me.  I haven't run it
> through the testsuite, and it might be nice compare more than just
> frame ids (and for the gdb crowd, yes, the FIXME needs to go before
> being checked in ...), but .... this patch seems otherwise reasonable
> to me.  At the point where the patch is applied gdb has already
> decided to continue - what's a case where it *should* continue at this
> point *if* the frame has changed?  [Note that gdb has already handled
> various cases like stopping in trampolines and such.]

In addition to what Eli said... here's the previous block:

  if ((stop_pc == stop_pc_sal.pc)
      && (ecs->event_thread->current_line != stop_pc_sal.line
          || ecs->event_thread->current_symtab != stop_pc_sal.symtab))
    {
      /* We are at the start of a different line.  So stop.  Note that
         we don't stop if we step into the middle of a different line.
         That is said to make things like for (;;) statements work
         better.  */

IOW, if we are at a line boundary, we stop stepping.  If we've ended
up in the middle of a line, we keep going.  This prevents us from
ending up in a weird state where we show the line containing the
function call, but the function has already been called.  I think it'd
be even more confusing.

This is a difference between stepping out of a function and finishing.

Now, if you end up in a different function while continuing to step
(or "next"), there's a good argument that you should stop...

-- 
Daniel Jacobowitz
CodeSourcery


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