| 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 |