delve/pkg/proc
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
..
amd64util proc/native: low level support for watchpoints in linux/amd64 (#2301) 2021-05-06 10:33:56 -07:00
core proc/core/minidump,proc/gdbserial: update broken ext links (#2570) 2021-07-06 09:28:53 -07:00
fbsdutil proc: remove duplicate Registers.Get implementations (#2415) 2021-04-28 10:00:26 -07:00
gdbserial proc: allow multiple overlapping internal breakpoints (#2519) 2021-07-21 08:24:19 -07:00
linutil proc: remove duplicate Registers.Get implementations (#2415) 2021-04-28 10:00:26 -07:00
macutil proc/native,proc/gdbserial: detect and complain about Rosetta (#2569) 2021-07-06 08:53:39 -07:00
native proc/native,proc/gdbserial: detect and complain about Rosetta (#2569) 2021-07-06 08:53:39 -07:00
test pkg/proc: fix for file reference handling with DWARF 5 compilation units (#2327) 2021-01-29 09:23:52 -08:00
winutil proc: remove duplicate Registers.Get implementations (#2415) 2021-04-28 10:00:26 -07:00
amd64_arch.go proc: add way to use CPU registers in expressions (#2446) 2021-05-04 12:56:17 -07:00
amd64_disasm.go proc: remove duplicate Registers.Get implementations (#2415) 2021-04-28 10:00:26 -07:00
arch.go proc: add way to use CPU registers in expressions (#2446) 2021-05-04 12:56:17 -07:00
arm64_arch.go proc: add way to use CPU registers in expressions (#2446) 2021-05-04 12:56:17 -07:00
arm64_disasm.go proc: remove duplicate Registers.Get implementations (#2415) 2021-04-28 10:00:26 -07:00
bininfo.go Go 1.17 support branch (#2451) 2021-07-08 08:47:53 -07:00
breakpoints.go proc: allow multiple overlapping internal breakpoints (#2519) 2021-07-21 08:24:19 -07:00
disasm.go proc: remove duplicate Registers.Get implementations (#2415) 2021-04-28 10:00:26 -07:00
doc.go Move top-level packages into pkg 2017-02-08 12:17:19 -08:00
dump.go terminal,service,proc/*: adds dump command (gcore equivalent) (#2173) 2021-01-29 13:39:33 -08:00
dwarf_export_test.go proc: give unique addresses to registerized variables (#2527) 2021-07-02 18:37:55 +02:00
dwarf_expr_test.go dwarf/op,proc: fix handling of DW_OP_piece (#2485) 2021-05-17 10:26:49 -07:00
eval.go pkg/proc: fix bug where frame parameter is ignored if no goroutine (#2563) 2021-07-03 15:48:35 +02:00
fncall.go Go 1.17 support branch (#2451) 2021-07-08 08:47:53 -07:00
goroutine_cache.go proc/*,service: replace uses of uintptr with uint64 (#2163) 2020-09-09 10:36:15 -07:00
i386_arch.go proc: add way to use CPU registers in expressions (#2446) 2021-05-04 12:56:17 -07:00
i386_disasm.go proc: remove duplicate Registers.Get implementations (#2415) 2021-04-28 10:00:26 -07:00
interface.go proc,terminal: Ensure correct exit status (#2543) 2021-06-22 13:35:13 +02:00
mem.go proc: give unique addresses to registerized variables (#2527) 2021-07-02 18:37:55 +02:00
moduledata.go proc/*,service: replace uses of uintptr with uint64 (#2163) 2020-09-09 10:36:15 -07:00
pe.go proc: fix typo 'unkown' => 'unknown' (#2473) 2021-05-10 11:36:03 -07:00
proc_general_test.go Go 1.17 support branch (#2451) 2021-07-08 08:47:53 -07:00
proc_linux_test.go proc/*: add launch option to disable ASLR (#2202) 2020-10-21 12:50:52 -07:00
proc_test.go proc: allow multiple overlapping internal breakpoints (#2519) 2021-07-21 08:24:19 -07:00
proc_unexported_test.go proc: correctly truncate the result of binary ops on integers (#2463) 2021-05-17 10:31:05 -07:00
proc_unix_test.go proc/native/linux: better handling of process death due to signals (#2477) 2021-05-17 09:48:48 -07:00
registers.go proc: remove duplicate Registers.Get implementations (#2415) 2021-04-28 10:00:26 -07:00
scope_test.go proc: give unique addresses to registerized variables (#2527) 2021-07-02 18:37:55 +02:00
stack.go Go 1.17 support branch (#2451) 2021-07-08 08:47:53 -07:00
target_exec.go proc: allow multiple overlapping internal breakpoints (#2519) 2021-07-21 08:24:19 -07:00
target.go Go 1.17 support branch (#2451) 2021-07-08 08:47:53 -07:00
threads.go proc/*: implement proc.(*compositeMemory).WriteMemory (#2271) 2021-03-04 10:28:28 -08:00
types.go proc: fix runtimeTypeToDIE setup (#2486) 2021-05-19 10:42:10 -07:00
variable_test.go pkg/proc: Move proc exec funcs to Target methods 2020-03-25 17:45:12 +01:00
variables.go Go 1.17 support branch (#2451) 2021-07-08 08:47:53 -07:00
x86_disasm.go proc: remove duplicate Registers.Get implementations (#2415) 2021-04-28 10:00:26 -07:00