commands/FBDelay.py (34 lines of code) (raw):
#!/usr/bin/python
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
from threading import Timer
import fbchisellldbbase as fb
import lldb
def lldbcommands():
return [FBDelay()]
class FBDelay(fb.FBCommand):
def name(self):
return "zzz"
def description(self):
return "Executes specified lldb command after delay."
def args(self):
return [
fb.FBCommandArgument(
arg="delay in seconds",
type="float",
help="time to wait before executing specified command",
),
fb.FBCommandArgument(
arg="lldb command",
type="string",
help="another lldb command to execute after specified delay",
default="process interrupt",
),
]
def run(self, arguments, options):
lldb.debugger.SetAsync(True)
lldb.debugger.HandleCommand("process continue")
delay = float(arguments[0])
command = str(arguments[1])
t = Timer(delay, lambda: self.runDelayed(command))
t.start()
def runDelayed(self, command):
lldb.debugger.HandleCommand("process interrupt")
lldb.debugger.HandleCommand(command)