#!/usr/bin/env python


def __lldb_init_module(debugger, internal_dict):
  debugger.HandleCommand(
      'command alias in_call_stack breakpoint command add --python-function in_call_stack.in_call_stack -k name -v %1'
  )


def in_call_stack(frame, bp_loc, arg_dict, _):
  """Only break if the given name is in the current call stack."""
  name = arg_dict.GetValueForKey('name').GetStringValue(1000)
  thread = frame.GetThread()
  found = False
  for frame in thread.frames:
    # Check the symbol.
    symbol = frame.GetSymbol()
    if symbol and name in frame.GetSymbol().GetName():
      return True
    # Check the function.
    function = frame.GetFunction()
    if function and name in function.GetName():
      return True
  return False
