I just wanted to clear up the expected behavior when stepping code that has
breakpoints on adjacent address lines.
In this simple example.
0x0 instruction A
0x4 instruction B
0x8 instruction C
If I break on addresses 0x0, 0x4 and 0x8 with the break *(address)
functionality and then continue to 0x0 and step the other 2 instructions I
only ever see the breakpoint trigger on address 0x0. GDB steps to the next 2
addresses but does not report a breakpoint at either location. Is this the
expected behavior.
It looks from the source in infrun.c (handle_inferior_event()) that if the
trap_expected flag is set then it discards any breakpoint matching at the
current address.