[all-commits] [llvm/llvm-project] 0dd62a: [lldb] Disable variable watchpoints when going out...

Med Ismail Bennani via All-commits all-commits at lists.llvm.org
Wed Jun 7 16:53:07 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0dd62ace2ee2fafcb9a08953db1b9e4e20428e28
      https://github.com/llvm/llvm-project/commit/0dd62ace2ee2fafcb9a08953db1b9e4e20428e28
  Author: Med Ismail Bennani <ismail at bennani.ma>
  Date:   2023-06-07 (Wed, 07 Jun 2023)

  Changed paths:
    M lldb/include/lldb/Breakpoint/Watchpoint.h
    M lldb/source/Breakpoint/Watchpoint.cpp
    M lldb/source/Commands/CommandObjectWatchpoint.cpp
    M lldb/test/Shell/ScriptInterpreter/Lua/watchpoint_callback.test
    A lldb/test/Shell/Watchpoint/Inputs/val.c
    A lldb/test/Shell/Watchpoint/Inputs/watchpoint.in
    A lldb/test/Shell/Watchpoint/LocalVariableWatchpointDisabler.test

  Log Message:
  -----------
  [lldb] Disable variable watchpoints when going out of scope

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

rdar://109574319

Differential Revision: https://reviews.llvm.org/D151366

Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>




More information about the All-commits mailing list