1import lldb 2 3 4class stop_handler: 5 def __init__(self, target, extra_args, dict): 6 self.extra_args = extra_args 7 self.target = target 8 self.counter = 0 9 ret_val = self.extra_args.GetValueForKey("return_false") 10 if ret_val: 11 self.ret_val = False 12 else: 13 self.ret_val = True 14 15 def handle_stop(self, exe_ctx, stream): 16 self.counter += 1 17 stream.Print("I have stopped %d times.\n" % (self.counter)) 18 increment = 1 19 value = self.extra_args.GetValueForKey("increment") 20 if value: 21 increment = value.GetUnsignedIntegerValue() 22 else: 23 stream.Print("Could not find increment in extra_args\n") 24 frame = exe_ctx.GetFrame() 25 expression = "g_var += %d" % (increment) 26 expr_result = frame.EvaluateExpression(expression) 27 if not expr_result.GetError().Success(): 28 stream.Print( 29 "Error running expression: %s" % (expr_result.GetError().GetCString()) 30 ) 31 value = exe_ctx.target.FindFirstGlobalVariable("g_var") 32 if not value.IsValid(): 33 stream.Print("Didn't get a valid value for g_var.") 34 else: 35 int_val = value.GetValueAsUnsigned() 36 stream.Print("Returning value: %d from handle_stop.\n" % (self.ret_val)) 37 return self.ret_val 38 39 40class bad_handle_stop: 41 def __init__(self, target, extra_args, dict): 42 print("I am okay") 43 44 def handle_stop(self): 45 print("I am bad") 46 47 48class no_handle_stop: 49 def __init__(self, target, extra_args, dict): 50 print("I am okay") 51