delve/service/debugger
Alessandro Arzilli 658d36cb19
proc: allow multiple overlapping internal breakpoints (#2519)
Changes Breakpoint to allow multiple overlapping internal breakpoints
on the same instruction address.
This is done by changing the Breakpoint structure to contain a list of
"breaklets", each breaklet has a BreakpointKind and a condition
expression, independent of the other.
A breakpoint is considered active if any of its breaklets are active.
A breakpoint is removed when all its breaklets are removed.
We also change the terminology "internal breakpoint" to "stepping
breakpoint":

HasInternalBreakpoints -> HasSteppingBreakpoints
IsInternal -> IsStepping
etc...

The motivation for this change is implementing watchpoints on stack
variables.
Watching a stack variable requires also setting a special breakpoint to
find out when the variable goes out of scope. These breakpoints can not
be UserBreakpoints because only one user breakpoint is allowed on the
same instruction and they can not be internal breakpoints because they
should not be cleared when a next operation is completed (they should
be cleared when the variable watch is cleared).

Updates #279
2021-07-21 08:24:19 -07:00
..
debugger_darwin.go Add support for Windows. 2016-01-20 19:06:31 -08:00
debugger_freebsd.go *: FreeBSD initial support (#1480) 2019-07-12 18:28:04 -07:00
debugger_linux.go debugger: make yama error more verbose 2018-08-20 10:37:04 -07:00
debugger_test.go *: Better error launching invalid binary format 2020-04-02 18:41:16 +02:00
debugger_unix_test.go service/debugger: Fix checking for CI 2020-04-14 21:02:38 +02:00
debugger_unix.go *: Better error launching invalid binary format 2020-04-02 18:41:16 +02:00
debugger_windows.go *: Better error launching invalid binary format 2020-04-02 18:41:16 +02:00
debugger.go proc: allow multiple overlapping internal breakpoints (#2519) 2021-07-21 08:24:19 -07:00