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