This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: Next over function and breakpoint setting
- From: Daniel Jacobowitz <drow at false dot org>
- To: Orjan Friberg <orjan dot friberg at axis dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Sat, 27 Mar 2004 00:50:37 -0500
- Subject: Re: Next over function and breakpoint setting
- References: <40572066.2020304@axis.com>
On Tue, Mar 16, 2004 at 04:42:30PM +0100, Orjan Friberg wrote:
> Out of curiosity I followed what happens when issuing a next command
> over a function call. The reason I got curious was that I noticed
> (remote protocol) that GDB sets a breakpoint on the first instruction of
> the function being stepped over, and, when stopped there, sets another
> breakpoint at that function's return address to accomplish the "next".
>
> Actually, maybe that's a misrepresentation: looking at the code, it
> seems GDB does a step, and if it *then* finds it ended up inside a
> function (step_into_function -> step_over_function) it decides to step
> out of it.
>
> Looking at the code in infcmd.c and infrun.c I'm sure there's a good
> reason for not just setting the breakpoint on the address belonging to
> the next line of code, but I couldn't find any comment saying what that
> reason is. Anyone care to enlighten me?
>
> (I couldn't say if any of this was remote target/CRIS specific;
> apologies if it is and I missed it.)
[Sorry, missed this the first time.]
"The next line of code" is a very iffy concept. GDB doesn't analyze a
line to figure out what it does, or where it might transfer control
to... while possible, that would be a very different approach to
debugging. So the only way we have to implement next is to step and
see where we end up - and if we don't like it, go until we're somewhere
else.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer