Re: [PATCH 3/5] range stepping: gdb

Eli Zaretskii
2013-05-14T19:46:37Z

> 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.