This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 3/5] range stepping: gdb
- From: Eli Zaretskii <eliz at gnu dot org>
- To: Pedro Alves <palves at redhat dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Tue, 14 May 2013 22:46:23 +0300
- Subject: Re: [PATCH 3/5] range stepping: gdb
- References: <20130514191026 dot 13213 dot 39574 dot stgit at brno dot lan> <20130514191047 dot 13213 dot 8476 dot stgit at brno dot lan>
- Reply-to: Eli Zaretskii <eliz at gnu dot org>
> From: Pedro Alves <palves@redhat.com>
> Date: Tue, 14 May 2013 20:10:47 +0100
>
> When user issues the "step" command on the following line of source,
>
> a = b + c + d * e - a;
>
> GDB single-steps every single instruction until the program reaches a
> new different line.
I always thought that GDB sets a temporary breakpoint at the end, and
then lets the target run freely. Why not?
> +@var{end} is the address of the first instruction beyond the step
> +range, and @strong{not} the address of the last instruction within it.
> +(This has the property that @var{start} == @var{end} single-steps
> +once, and only once, even if the instruction at @var{start} jumps to
> +@var{end}.)
This sentence in parentheses got me completely confused. Before
reading it, I thought I understood what is this about; now I don't.
In particular, if START is equal to END, then how in the world could
the instruction at START jump to END? And if END is excluded from the
range, then why when START equals END do we step at all? Please
explain.