If we use a variable watchpoint with a condition using a scope variable,
if we go out-of-scope, the watpoint remains active which can the
expression evaluator to fail to parse the watchpoint condition (because
of the missing varible bindings).
This was discovered after `watchpoint_callback.test` started failing on
the green dragon bot.
This patch should address that issue by setting an internal breakpoint
on the return addresss of the current frame when creating a variable
watchpoint. The breakpoint has a callback that will disable the watchpoint
if the the breakpoint execution context matches the watchpoint execution
context.
This is only enabled for local variables.
This patch also re-enables the failing test following e1086384e5.
rdar://109574319
Differential Revision: https://reviews.llvm.org/D151366
Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
14 lines
373 B
Plaintext
14 lines
373 B
Plaintext
breakpoint set -p "Break here"
|
|
r
|
|
watchpoint set variable val
|
|
watchpoint modify -c "val == 1"
|
|
c
|
|
# CHECK: Watchpoint 1 hit:
|
|
# CHECK-NEXT: old value: 0
|
|
# CHECK-NEXT: new value: 1
|
|
# CHECK-NEXT: Process {{[0-9]+}} resuming
|
|
# CHECK-NEXT: Process {{[0-9]+}} stopped
|
|
# CHECK-NEXT: {{.*}} stop reason = watchpoint 1
|
|
c
|
|
# CHECK: Process {{[0-9]+}} exited with status = 0 (0x00000000)
|