1*99451b44SJordan Rupprechtimport lldb 2*99451b44SJordan Rupprecht 3*99451b44SJordan Rupprecht 4*99451b44SJordan Rupprechtclass OperatingSystemPlugIn(object): 5*99451b44SJordan Rupprecht """Class that provides data for an instance of a LLDB 'OperatingSystemPython' plug-in class""" 6*99451b44SJordan Rupprecht 7*99451b44SJordan Rupprecht def __init__(self, process): 8*99451b44SJordan Rupprecht '''Initialization needs a valid.SBProcess object. 9*99451b44SJordan Rupprecht 10*99451b44SJordan Rupprecht This plug-in will get created after a live process is valid and has stopped for the first time. 11*99451b44SJordan Rupprecht ''' 12*99451b44SJordan Rupprecht self.process = None 13*99451b44SJordan Rupprecht self.registers = None 14*99451b44SJordan Rupprecht self.threads = None 15*99451b44SJordan Rupprecht if isinstance(process, lldb.SBProcess) and process.IsValid(): 16*99451b44SJordan Rupprecht self.process = process 17*99451b44SJordan Rupprecht self.threads = None # Will be an dictionary containing info for each thread 18*99451b44SJordan Rupprecht 19*99451b44SJordan Rupprecht def get_target(self): 20*99451b44SJordan Rupprecht return self.process.target 21*99451b44SJordan Rupprecht 22*99451b44SJordan Rupprecht def get_thread_info(self): 23*99451b44SJordan Rupprecht if not self.threads: 24*99451b44SJordan Rupprecht self.threads = [{ 25*99451b44SJordan Rupprecht 'tid': 0x1, 26*99451b44SJordan Rupprecht 'name': 'one', 27*99451b44SJordan Rupprecht 'queue': 'queue1', 28*99451b44SJordan Rupprecht 'state': 'stopped', 29*99451b44SJordan Rupprecht 'stop_reason': 'none' 30*99451b44SJordan Rupprecht }, { 31*99451b44SJordan Rupprecht 'tid': 0x2, 32*99451b44SJordan Rupprecht 'name': 'two', 33*99451b44SJordan Rupprecht 'queue': 'queue2', 34*99451b44SJordan Rupprecht 'state': 'stopped', 35*99451b44SJordan Rupprecht 'stop_reason': 'none' 36*99451b44SJordan Rupprecht }, { 37*99451b44SJordan Rupprecht 'tid': 0x3, 38*99451b44SJordan Rupprecht 'name': 'three', 39*99451b44SJordan Rupprecht 'queue': 'queue3', 40*99451b44SJordan Rupprecht 'state': 'stopped', 41*99451b44SJordan Rupprecht 'stop_reason': 'sigstop', 42*99451b44SJordan Rupprecht 'core': 0 43*99451b44SJordan Rupprecht }] 44*99451b44SJordan Rupprecht return self.threads 45