This is the mail archive of the gdb-patches@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]

Re: [RFA] Testsuite addition for x86 linux GDB and SIGALRM fix


Andrew Cagney wrote:
> 
> >
> > All are the same.  "step" gets into foo(), a "finish" finishes foo(),
> > but then there is bar() so you stop there next.  Another "finish" and
> > you will stop on the line that follows the above lines.
> >
> > Note that a "finishi" command would leave you at the return point at
> > some PC in the middle of the above source lines.
> 
> So what happens if you're sitting in foo() and type finish but the
> previous command wasn't step.  Do you still find yourself in bar()?
> 

The current model is that one can switch between the source and assembler debugging at any time by issuing a control command with "i" or without it.  So the previous command does not matter -- what matters is if you issued "finish" or "finishi".

> >
> > 'step' should never leave you in the same line from where you've issued
> > it.  That is counter intuitive, even if you had a stop-finish in the
> > middle.
> 
> This actually throws me.  Reading it one way it suggests that ``step ;
> finish'' should have special behavour.  See question above.
> 

No (see above).

> Anyway try thinking of ``finish'' as a special form of step.  What
> happens if you step through foo()?  When foo() exits do you jump to
> bar() or go back to the caller?
> 

"step" over a subroutine return should behave like "finish" from any other point in that subroutine.  A "stepi" should do what "finishi" would do.

-- 
Fernando Nasser
Red Hat - Toronto                       E-Mail:  fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario   M4P 2C9


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