| import lldb |
| |
| |
| class OperatingSystemPlugIn(object): |
| """Class that provides data for an instance of a LLDB 'OperatingSystemPython' plug-in class |
| This version stops once with threads 0x111 and 0x222, then stops a second time with threads |
| 0x111 and 0x333.""" |
| |
| def __init__(self, process): |
| '''Initialization needs a valid.SBProcess object. |
| |
| This plug-in will get created after a live process is valid and has stopped for the first time. |
| ''' |
| self.process = None |
| self.registers = None |
| self.threads = None |
| self.times_called = 0 |
| if isinstance(process, lldb.SBProcess) and process.IsValid(): |
| self.process = process |
| self.threads = None # Will be an dictionary containing info for each thread |
| |
| def get_target(self): |
| return self.process.target |
| |
| def get_thread_info(self): |
| self.times_called += 1 |
| |
| if self.times_called == 1: |
| self.threads = [{ |
| 'tid': 0x111, |
| 'name': 'one', |
| 'queue': 'queue1', |
| 'state': 'stopped', |
| 'stop_reason': 'none', |
| 'core': 1 |
| }, { |
| 'tid': 0x222, |
| 'name': 'two', |
| 'queue': 'queue2', |
| 'state': 'stopped', |
| 'stop_reason': 'none', |
| 'core': 0 |
| }] |
| else: |
| self.threads = [{ |
| 'tid': 0x111, |
| 'name': 'one', |
| 'queue': 'queue1', |
| 'state': 'stopped', |
| 'stop_reason': 'none', |
| 'core': 1 |
| }, { |
| 'tid': 0x333, |
| 'name': 'three', |
| 'queue': 'queue3', |
| 'state': 'stopped', |
| 'stop_reason': 'none', |
| 'core': 0 |
| }] |
| return self.threads |
| |