diff options
Diffstat (limited to 'gnu/llvm/lldb/examples/python/in_call_stack.py')
-rwxr-xr-x | gnu/llvm/lldb/examples/python/in_call_stack.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/examples/python/in_call_stack.py b/gnu/llvm/lldb/examples/python/in_call_stack.py new file mode 100755 index 00000000000..0647f2ca342 --- /dev/null +++ b/gnu/llvm/lldb/examples/python/in_call_stack.py @@ -0,0 +1,24 @@ +#!/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 |